Wordドキュメントに特定のキーワードが含まれているかどうかを判定する
困ったこと
めちゃくちゃめんどくさい調べ物をして作ったWordドキュメントが、フラッシュメモリから消えていた。
今使っている安物のフラッシュメモリは、変なところで買ったやつで、しばしばフォルダの中身が突然空になるなど、非常におそろしい動作をするので、それかなとも思った。ただ、フォルダの中身が消えているのではなく、フォルダ構成からして変わっているので、どうもBackup用のディスクからフォルダごと上書きしてしまったらしい。
イチから作り直すことも考えたが、あまりにもめんどくさいので、いちかばちか復元を試みることにした。
DiskDiggerによる復元
ずーっと前に、USBフラッシュメモリが突然「フォーマットしますか?」になったときに世話になったDiskDiggerというフリーソフトでWordドキュメントを復元してみた。
そうすると、
この状態……。何十個も検出されたのですよ。
この中から、お目当てのファイルを突き止めるのは、大変である。
幸い、紛失したWordドキュメントの中には、かなり特殊な文言が用いられているので、
ドキュメントに特定のキーワードが含まれているかどうかを判定するFunction
を作ったらよいと考えた。
ドキュメントに特定のキーワードが含まれているかどうかを判定するFunction
手順は至極簡単。
- ドキュメントを開く
- ドキュメントの全文を取得する
- 取得した中にキーワードが含まれているかどうか判定する
たったこれだけ。実に簡単。
ドキュメントを開く
これは、[Documents].Open
メソッドを使ったらよい。
ドキュメントの全文を取得する
これは、[Document].Range()
とすれば、ドキュメントの本体部分のRange
オブジェクトが返るっぽい。
だから、[Document].Range().Text
としてやれば、全文を取得することができる。
コーディング
上記を踏まえて、Functionを作成する。
リスト1
Public Function HasKeyWord( _ ByVal TgtDocument As Document, _ ByVal KeyWord As String) As Boolean HasKeyWord = True If InStr(1, TgtDocument.Range().Text, KeyWord) > 0 Then Exit Function HasKeyWord = False End Function
たったこれだけ。
使ってみる
まずは、このようなWordドキュメント(笑)を準備する。
このドキュメント(笑)に対して、HasKeyWord
メソッドを実行してみる。
イミディエイト・ウィンドウに
?HasKeyWord(ThisDocument,"できる・できないのひみつ")
と入力して[Enter]!
うむ。望み通りの結果を返しておる!
次に、ドキュメント(笑)から「できる・できないのひみつ」を削除し、
この状態にしてから、イミディエイト・ウィンドウに上掲コードを入力して[Enter]!
うむ! 素晴らしい!
最後に、1万字超のドキュメントでもやってみる。
こんなふうに、1万字超のドキュメント内に、こっそり「そんなの、できっこないす!」というキーワード(笑)をしのばせておく。
んで、このドキュメントをアクティブにしておいて、イミディエイト・ウィンドウに
?HasKeyWord(ActiveDocument,"そんなの、できっこないす!")
と入力して[Enter]!
おおおおおお! バッチリやないかーーーー!
おわりに
……というわけで、このメソッドを用いて、奇跡的に紛失したファイルを無事に見つけ出したのでありました。
めでたしめでたし。