こんにちは。ワードマクロについての初心者講座です。
今回は、VBEを開くとすぐ左上に表示されるプロジェクトエクスプローラに表示されるプロジェクトについて説明します。
プロジェクトとは
下図は、VBEのプロジェクトエクスプローラの表示例です。
Normalという標準テンプレート(Normal.docm)と、マクロ付き文書「マクロ保存テスト用.docm」を開いているときの表示です。
ツリーの一番上の階層の 「Normal」、「Project(ファイル名)」がプロジェクトです。
テンプレートファイル、あるいは個別文書ファイルが、一つのプロジェクトとみなされます。
プロジェクトはモジュールで構成されてます
プロジェクトの中に、マクロが構成されるのですが、いきなりドサッと入っているわけではなくて、プロジェクトの中に、モジュールという部品に分けてマクロを管理するようになってます。
上図では、それぞれのプロジェクトが、「Microsoft Word Objects」 の中の 「ThisDocument」 というモジュールと、「標準モジュール」の中の「NewMacros」の2つのモジュールから成り立っています。
ThisDocumentはイベントプロシージャを記述する特殊なモジュール
モジュール「ThisDocument」は、プロジェクトに一つ、はじめから作成されています。
最初は何も記述しておらず、何の動作もしません。
イベントプロシージャを記述します。
イベントプロシージャとは?
イベントプロシージャとは、イベントが起きたときに実行したい処理(プロシージャ)を記述してあるVBAコードのことです。
この場合のイベントとは、例えば、
- 文書を新規作成したとき
- 文書を開いたとき
- 文書を閉じたとき
などがあります。文書を開いたときに、必ず「こんにちは」などとメッセージウィンドウを表示させたいときは、イベント「文書を開いたとき」の処理をVBAで記述することになります。
例えば、「ThisDocument」に下のようなコードを書くと・・・
次回、文書を開いたとき、下図のようなウィンドウが開きます。
標準モジュールフォルダの下にモジュールを作ってマクロを作る!
イベントプロシージャ以外の、いわゆる”普通の”マクロは、「標準モジュール」フォルダの中にモジュールを作って、記述していきます。
その中でもモジュール「NewMacros」は、「マクロの記録」でキー操作を記録するときに使われるモジュールになります。
下図のように、キー操作したものが記録されています。もちろん編集することは可能です。
そしてマクロを作るとき、キー操作したVBAの記録をもとにマクロを作るのはよくやりますし、プログラミングにかかる時間が短縮できておすすめです。
ただ、キー操作を記録したままのコードは、無駄なコードが多かったり、実行中にマウス操作するとうまく実行できなかったりとあるので、修正してから使うほうが良いです。
そのことも今後説明していこうと思います。
まとめ
VBEにおけるプロジェクトとは、テンプレートファイルや、文書ファイルなど、ファイルとほぼ同じ意味となります。
マクロを管理する単位になっており、プロジェクト=制作物 のような位置づけです。
プロジェクトは、モジュールで構成されており、モジュールの中にマクロを記述していきます。
モジュールには、「ThisDocument」というイベントプロシージャを記述するものと、その他一般的なマクロを記述する「標準モジュール」の2種類があります。
コメント
勉強になりいつもお世話になっています。記録マクロでコードを作ってサイトで公開したいのですが貴殿のサイトみたいにVBAコードを公開するにはどうすればいいのですか? テラパッドみたいに
コメントありがとうございます。
僕は、このブログをワードプレスで作っていまして、コードを表示するのにプラグインを使っています。
Crayon Syntax Highlighter というプラグインなのですが、もう、古くて、新しいPHPバージョンだと、まともに動かないところ、一部、修正して動かしています。
(参考記事: https://kekaku.addisteria.com/wp/20190705052752)
ちょっと無理やり感があるのでおすすめできません。
代わりに、例えば、以下のツールは、僕が使っているプラグインと同じ作者が作成しているようで、最近も更新されています。
https://ja.wordpress.org/plugins/urvanov-syntax-highlighter/
僕のワードプレスのバージョンは古く、このプラグインは入れられないっぽいですが、ワードプレス5.7以上であれば、こちらのほうが良いのではと思います。
すみません、ちょっと、最近いじっておらず、あまりおすすめできませんが、なにかしらの参考になれば幸いです。