dods’ blog - 今と昔のノートブック

今の記録は情報提供。昔の記憶は話題提供。気ままに記します。

Micorsoft の VBA について話す (7)

VBA について、素人なりに格闘した結果をときどき記事にしています。だいぶ間が空きましたが、今回は Word の VBA 機能を利用し、3日坊主にならずに日記を継続させるための補助マクロを作ったので、その紹介です。

 

自動スペルチェック機能を生かせば英文日記を続ける支援になるでは、というのが元々の動機です。ついでに日付を自動で入れたり、パスワードを設定したり、保存・読み出しの手間を軽くするなどの工夫を盛り込んでみました。

 

といっても開発したのは実は13年前。Word のバージョンも変わりました。このため、今年に入って微調整し、以前も紹介した、moug のフリーソフトコーナーにアップデート版を投稿しました。

 

投稿先のリンクはここになります。ダウンロードには会員登録(無料)が必要ですので、ご注意ください。

http://www.moug.net/cgi-bin/softwaredl.cgi?word+SI2005031401

 

VBA挿入のVBA

 

用意したVBAは大きく分けて3種類になります。

  1.  日常的に日記をつけるための VBA
  2.  その VBA (モジュールとフォーム)をワードへ挿入するための VBA
  3.     VBA が不要になった場合モジュールやフォームを解放するための VBA

Word へ VBA を誰でも簡単に挿入できるための方法をあれこれ考え、VBA 挿入のための VBA も開発することにしました。それが2に当たります。2と3は、ちょうどソフトウェアのインストールとアンインストールのような仕事をします。そこでファイル名も Install.doc と Uninstall.doc にしました。

 

VBAを標準テンプレートに格納

 

今回の VBA は標準テンプレート呼ばれる、ワードを普通に起動させたときに読みにいくファイルに格納させています。別の方法もあるのですが、気が向いた時にワードさえ立ち上げれば日記をつけられるよう、この方法にしました。

 

その詳細と、ワードでVBAを利用すること全般については次のマイクロソフトのサイトが参考になります。


https://msdn.microsoft.com/ja-jp/library/office/ff604039(v=office.14).aspx

 

ワード専用VBA

 

上の参照先に限らず、ワードの VBA の情報源はもっぱらインターネットからでした。書籍もきっとあるのでしょうが、自分にはネット情報で必要十分でした。

 

ところで、VBA にはワード専用に開発されているプロパティ、メソッド、関数があると知り、ずいぶん勉強になりました。今回もそのいくつかを用いていますが、特に上で説明した VBA 挿入のための VBA で強力に働いているのが次の2つです。

  •  関数 Document_Open
  •  メソッド Application.OrganizerCopy

 

f:id:dods:20180728133945j:plain


実際のコードを画像で紹介しましょう。1行目のDocument_Openは、このファイルを開いたらこのモジュールが自動で実行するための関数です。Excel のWorkbook_Open  の Word版ですね。

 

5行目と11行目の Application.OrganizerCopy は、「指定された定型句、ツールバー、スタイル、またはマクロ プロジェクト項目を、コピー元の文書またはテンプレートからコピー先の文書またはテンプレートにコピー」するメソッドで、これがなければ今回の VBA は生まれなかったと断言できる機能です。

 

引用元は次のマイクロソフトのサイトからでした。


https://msdn.microsoft.com/ja-jp/vba/word-vba/articles/application-organizercopy-method-word

 

もう一つ、PrivateProfileString というプロパティも、今回の VBA で非常に役立っている機能なのですが、長くなったのでまたの機会にでもご紹介します。

 

大事な補足

 

install.doc を開くと、「保護されたビュー」というモードで開くようです。これはファイルを読み取り専用モードで開かせる機能なのですが、Document_Open は実行され、結果的に VBA の挿入が不完全に終わってしまいます。

 

対策として、ファイルタブ>オプション>セキュリティセンター>セキュリティセンターの設定>保護されたビューと進んでチェックを外すなど、いくつか方法はあるようです。

 

詳細は次のサイトをご覧ください。


http://office-qa.com/Word/wd383.htm