ホーム 業務内容 パソコン道場 情報化事始 セミナ資料 技術コラム 料金

 技術コラム
 てこずったWord VBA (2001.11.16)
VBAとはVisual Basic for Applicationsの略語であり、Microsoftが、Access、Excel、Wordなどの共通マクロ言語として採用しているプログラミング言語である。基本的な言語仕様はVisual Basicに相当する。

Word用のそのVBAを使うことになった。過去Visual Basicを使ってプログラムを作ってきた経験から、Word VBAなど簡単と思ったのが間違いのもとであった。書店にはAccess VBA やExcel VBAの書籍はたくさん置かれていたが、Word VBAというタイトルが付いた書籍は全くなかったのである。

同じVisual Basicじゃないかと思うことなかれ。同じ部分もあるが、違う部分もある。違う部分がAccess、Execel、Wordに固有な機能なら当然であるが、共通の機能でも実現手段が異なる場合がある。このために書籍が欲しかったのである。

結局、書籍の購入はあきらめ、Word VBAのHelpとホームページの情報でやってみることにした。Helpが分かりにくいのはWord VBAも同じであり、ホームページの検索を行ったがなかなか適当な情報が見つからない。書籍と同じくホームページもWord VBAの情報が少ないのである。

結局、Word VBAの起動すらままならず、起動方法が分かるまで時間がかかってしまった。これにはインターネット上の情報が新旧混在していることも災いしている。

起動方法が分かれば後は早い。プログラムができて思いどおりに動作した。終わったとほっとしたのもつかの間、作成したWordファイルを開いたあと何も変更しないまま閉じても、「xx.docは変更されています。保存しますか?」というメッセージが表示される。VBAによるプログラムが動作すると、表示されている内容が変わったと判断されるケースがあるようだ。

「変更されています。保存しますか」でホームページを検索してみると、これは周知の問題のためか、少なくない件数の解決策が見つかった。大きく分けて二つの解決策があった。解決策の対象がExcelであることが気になったものの、Wordの解決策が見つからないのだから仕方が無い。試してみた。

エラーになった。思うように動かない。あきらめきれずにその後延々と試行錯誤したが結局だめであった。

それでもあきらめきれず、しばらくしてから再トライした。「xx.docは変更されています。保存しますか?」というメッセージは、初期化プログラムの中の特定コードであることを既に把握していた。試しにこのコードを初期化プログラムの中からイベント処理プログラムの中に移してみた。うまくいった。

理由は分からない。分かるわけがない。Word VBAそのものを作ったわけでなし、書籍も読んでいないのだから。Excelの解決策のように理由がはっきりしていれば納得できるが、カットアンドトライによる行き当たりばったりの解決となってしまった。

理由付けされた解決策をご存知の人がいたら教えていただきたいと思っている。そして、Access VBAもExecel VBAもWord VBAも、同じことは同じ手段で実現できるようにしてほしいものである。


戻る ホーム