パワーポイントで会議資料を作るのがはやりだした。 複数人で分担して作り、最後に1ファイルに集める。 高齢化社会にPowerPointは優しい。MS-Excelだとどうしても表がどんどん細かくなる。PowerPointでは表が作りにくいから枚数が増えるだけだ。オフィスのペーパーレス化というのと組み合わせれば、すくなくとも地球環境への負担はさほど変わらない。フリーソフト開発秘話、目次へただし前出のように枚数が増える。ファイル結合は手動でやっていたが、どんどん肥大化して、この手間が馬鹿にならなくなる。
当方、肥大化という事態を予見し、フォルダ内のパワーポイントプレゼンテーション群を名前順に1ファイルに揃えるマクロを書いた。パワーポイントにもVBAがあるのではないか?と思って調べ始めてから僅か半日後である。 残念ながら、却下された。
1年以上経過したある日、フォルダ整理の為に、マクロの入ったファイルを捨てた。その1週間後、あんなの作れないか?と言われた。マージャンをやっている人は似たような経験があると思う。
何を今更、と思ったが納得はさせてくれた。前回のマクロはフォルダの中を全部結合するものだった。その場その場で結合したいファイルは変わってくるから、その制御ができないと不便なんだ。結合するファイルは外部のテキストファイルに記載するのがいいが、どうしてもということなら、ソースに直接書き込んでくれてかまわない。前回不要とした理由、必要であるものの要件、困難な場合の妥協点。これだけ提示してくれればやらない理由はない。出来るかどうかは別だが。
一応パワーポイントでのVBAの経験はあるが、前回は拾ってきたサンプルプログラムを適当にアレンジしただけ、なので、しかもそのプログラム捨てているので、ほぼゼロからのスタート、である。
パワーポイントはバージョンによって随分と仕様に差があるらしい。操作を記録してマクロ化する、ということが可能なバージョンを見つけて、手動での結合を実施。ところが、できたVBAソースは真っ白。手動ではできてもマクロでは出来ない、なんてことがあるらしい。更に古いバージョンだと、コマンドラインから結合できるらしいが、それは無理だった。MicrosoftはPowerPointのVBAに全く力を入れていないようだ。同じくもらいっ子でもMS-Accessは思い切り充実しているのだが。仕方がない、と例によってサンプルプログラムを探す。2つのファイルを結合するというのなら見つかる。といっても内部的にはコピペしているだけのようだ。すんごい安直。でもこれしかないの。一回やってみる。ん?書式まではコピーしてくれないらしくはみ出しまくり。というわけで作りかけのマクロつきファイルを破棄し、結合対象のファイルの中味を空にした後、VBエディタでコードを書き込む。今度はうまく行く。
ついで、複数の結合処理が出来るかを試す。ソースの中に結合するファイル名をフルパスで書き込みループ。これはわけないな。今度はファイル名を動的配列に入れてみよう。MS-ExcelのVBAと同じ文法で実施。ファイル名は引き続きソースに書き込んで、順次配列に追加。実行。あ、できた。
そろそろ何について語っているか分かってくれたよね。言語仕様がはっきりしない場合、できることを確かめながら徐々に機能を充実させてますって例よ。いよいよ外部ファイルに結合するファイルを書き込んで、の実験。テキストファイル読み込みもMS-ExcelのVBAの慣用句を借りてくる。緊張の一瞬。あっさり成功。ただしまだ入力ファイルはソース内に書き込んだまま。これをダイアログボックスで選ぶようにする。
これは出来なかった。まあ入力ファイルは内部定数として指定しているからいいか。あとはエラー処理だな。結合対象として指定されたファイルが見つからない場合は、処理を行わない。見つからないファイルはエラーリストに吐き出す。
というわけで完成!
ソフト名、pptBandくらいでどうかな。PPバンドで結合する。あの淀川沿いの梱包材屋さん、どうしてるかな。ついつい切り屑切れ端が散乱しそうな業種なのに、いつも奥さんが店をきれいにしていたのだ。私が最初に心配したのは「こんなことができるのなら何故今まで作ってくれなかったんですか」と怒られること。そーなんだよなあ。今までいくつのアイディアが「なぜ今までやってない」で潰されてきたことか。が、今回だけは違う。原案を別の人が考えたことになっているのでね。
なぜ私が考えると駄目なのだろう。