パワーポイントで作成された複数書類の全文検索。
例えば対象のプログラムがある機能を使っているかどうかを調べるという場合に、たとえばVB、たとえばWSHでCreateObject(“Powerpoint.Application”)などとしてポワーポイントをプログラムで処理するといったことはプログラマの皆様ならあると思う。
それで、パワーポイントの全文検索のプログラムを作った。かくShapeを調べて、それにTextFrameがあるかどうかを調べて、そのテキストに対象の文言が含まれているか調べるのです。
ところがこのプログラムを実施しても、文書がたくさんあるものだから、全文を検索するのに半日ぐらいかからってしまう。Excelの場合などはVisibleをFalseにするとか、全部の処理が終わるまで再描画をしないなどといったことができるのだが、パワーポイントではそういうことができない。
いろいろ、考えたのだが、そういうことなら、パワーポイントのテキスト部分だけを抜き出して、元の文書と同じ名前、同じツリーでどこかに保存しておいたらいいのではないかと思いついた。
パワーポイントのテキスト抽出については、いくつかのサイトに書かれている。
一つは上にあげたShapeがTextFrameを持っている場合に、そのテキストを抜くという方法。もう一つは、いったんそのパワーポイントをPDFで保存し、そのPDFからテキスト化するという方法。
前者のやり方をしてみると、パワーポイントのShapeを調べるだけでは表(table)のデータを抜いていないことがわかる。また、マスターのデータを抜いていない。
そこで表についてはやり直して改善した。マスターのデータ、実はPresentation.CustomLayoutという使ったことがないオブジェクトを使うのだけれど、確かにこれをすると抜けはするが、「タイトルの書式設定」などといった、文書のどこにも出てきていない文字列が同時に抜き取られることになった。
一方PDFにする方法は一見きれいなのだけれど、PDFからテキストに落とすのをWordの自動処理でさせようと思ったところ、Wordが勝手にパワーポイントの一部の文字列をヘッダーやフッターに割り振ってしまってテキスト化できないということが起こった。
ま、ねえ。結局自分はShapeから抜いた。それが一番簡単な解決法だと思った。
だけど、これは改良の余地はあると思う。いまフリーソフトも出ているようですね。