第 15 章 VISIO での MICROSOFT VBA プログラミング
Microsoft Visual Basic for Applications (VBA) プロジェクトは、モジュール、クラス モジュール、およびユーザー フォームで構成されています。
単純なプロジェクトには、ユーザー フォームまたはモジュールが 1 つだけあります。より複雑なプロジェクトには、複数のモジュール、クラス モジュール、およびユーザー フォームが含まれます。たとえば、図面を生成するソリューションの場合は、ユーザーに図形の情報を入力させるためのユーザー フォームなどを含めることができます。さらに、このソリューションの 1 つ以上のモジュールまたはクラス モジュール (またはその両方) に、以下の処理を行うコードを挿入することができます。
ファイルを開くなどのイベントに応じて処理を行うソリューションを作成する場合は、そのイベントの発生時に実行されるコードをソリューションに含めます。
ファイルをインポートして、既存のモジュール、クラス モジュール、またはユーザー フォームをプロジェクトに追加することもできます。また、プロジェクト項目をエクスポートし、別のプロジェクトで使用することもできます。さらに、ActiveX のコントロールを Visio ファイルに挿入することもできます。ActiveX コントロールの詳細については、「第 23 章 Visio ソリューションでの ActiveX コントロールの使用」を参照してください。
このセクションの内容...
VBA プログラムの多くには、モジュールが 1 つ以上含まれています。モジュールは、宣言とそれに続くプロシージャの集まりです。Visio の VBA プロジェクトにはすべて、ThisDocument というクラス モジュールが含まれています。これはプロジェクトのファイルを表すオブジェクトです。クラス モジュールを追加して、独自の VBA オブジェクトをプロジェクトに定義することもできます。
モジュールまたはクラス モジュールを挿入するには
コード ウィンドウに表示される空のモジュールにプロシージャを挿入します。プロシージャのテンプレートが作成されるので、そのテンプレートに VBA コードを入力します。
[プロシージャの追加] ダイアログ ボックス
モジュールまたはクラス モジュールにプロシージャを追加するには
プロシージャ名は、Visio の [マクロ] サブメニューの、モジュールのサブメニューに表示されます。プロシージャ名にはスペースや MsgBox、If、または Loop など、VBA がプログラミング言語として使用する予約語は使用できません。
モジュールおよびクラス モジュールには、複数の種類のプロシージャを含めることができます。
適用範囲とは、他のモジュールおよびプログラムからそのプロシージャにアクセスできる範囲のことです。
プロシージャの変数をローカルまたは静的 (グローバル) 変数として宣言できます。
VBA により項目のコード ウィンドウに、"プロシージャ テンプレート" が挿入されます。このテンプレートにコードを入力します。テンプレートには、挿入するプロシージャの種類に合わせ、コードの最初と最後の行が入っています。
プロシージャの詳細については、Microsoft Visual Basic のオンライン ヘルプを参照してください。
プログラムでユーザーに情報を入力させる場合は、ユーザー フォームを挿入してユーザー インターフェースを作成します。ユーザー フォームには、コマンド ボタンやテキスト ボックスなどのユーザー インターフェース コントロールが含まれます。プロジェクトにユーザー フォームを追加すると、VBA によって自動的に [コントロール] ツール ボックスが開かれます。コントロールとは、ユーザー フォーム上に配置するオブジェクトで、各コントロールにはプロパティ、メソッド、イベントがあります。コントロールが発生するイベントに応じて、なんらかの処理を実行できます。コントロールを使用すると、ユーザー入力を受け取り、出力を表示し、イベント プロシージャを実行できます。
コントロールを含むツール ボックスおよびユーザー フォーム
ユーザー フォームをプロジェクトに追加するには
コマンド ボタンやテキスト ボックスなどのコントロールの追加に関する詳細については、Visual Basic のオンライン ヘルプを参照してください。
ユーザー フォームのデフォルト名 = UserForm1
変更後の名前 = frmGetDocName
この例では、変更後のユーザー フォーム名は "frm" という文字列で始まっています。プログラミングでは、オブジェクトの種類がひとめで分かるように、コントロール名に frm、txt (テキストボックス)、lbl (ラベル)、cmd (コマンドボタン) 等の文字列がよく使用されます。
プロジェクトに項目をインポートするには、[ファイル] メニューから [ファイルのインポート] を選択します。VBA モジュール (.bas)、ユーザー フォーム (.frm)、またはクラス モジュール (.cls) のファイルであれば、どれでも選択してそのコピーをプロジェクトに追加できます。項目をプロジェクトからエクスポートして、他のプロジェクトにインポートすることもできます。項目をエクスポートするには、プロジェクト エクスプローラでエクスポートする項目を選択します。次に、[ファイル] メニューの [ファイルのエクスポート] を選択し、ファイルの保存場所を入力します。項目をエクスポートしても、プロジェクトから削除されることはありません。
プロジェクトまたはプロジェクト項目を Visio のファイル間でドラッグ&ドロップすることもできます。プロジェクト エクスプローラでプロジェクトまたはプロジェクト項目を選択し、そのアイコンを他の Visio のプロジェクト アイコン上へドラッグします。プロジェクト項目をドロップした場合は、自動的に適切なプロジェクト フォルダに格納されます。プロジェクトをドロップした場合は、[参照設定] フォルダからそのプロジェクトを参照できます。これは、1 つの Visio ファイルが持てるプロジェクトは 1 つだけだからです。代わりに、[参照設定] フォルダから、他の複数のプロジェクトを参照することができます。
注 ThisDocument クラス モジュールを Visio ファイル間でドラッグ&ドロップすることはできませんが、コード ウィンドウ間で ThisDocument のコードを他のプロジェクト項目のコードへドラッグ&ドロップまたはコピー&ペーストすることができます。