第 25 章 VISIO オートメーション ソリューションのパッケージ
作成するプログラムの種類と外部プログラム ファイルをインストールする場所によって、さまざまな方法でプログラムを実行できます。次のような方法があります。
Visio が開始されるたびにプログラムを実行するには、プログラムの実行可能 (EXE) ファイルまたは Visio ライブラリ (VSL) ファイルを、[ファイルパスの設定] タブで指定した Visio のスタートアップ フォルダにインストールします。
EXE ファイルや VSL ファイルなどの作成したプログラム、または Microsoft Visual Basic for Applications (VBA) マクロを [マクロ] ダイアログ ボックスから実行するには、[ファイルパスの設定] タブで指定した [アドオン] パスに従って、外部プログラムの EXE ファイルまたは VSL ファイルをインストールします。このパスに従ってインストールしたすべてのプログラムは、使用しているVisio の図面に保存された VBA パブリック マクロと共に、[マクロ] ダイアログ ボックスおよび [マクロ] サブメニューに表示されます。
[マクロ] ダイアログ ボックス
ユーザーが図形を右クリックしてメニュー項目を選択するとき、またはダブルクリック イベントなどのシェイプ イベントが発生するときに、プログラムを実行できます。図形のショートカット メニューからプログラムを実行するには、Visio の RUNADDON 関数を使用する数式を、図形の [アクション] セクションにある [Action] セルに入力し、メニュー項目のテキストを [Menu] セルに入力します。RUNADDON 関数は、作成した VBA プロジェクトに含まれるすべてのアドオンとマクロを実行できます。例を次に示します。
図形の [アクション] セクションの [Action] 行
絶対パスを指定しない場合、Visio は [ファイルパスの設定] タブで指定した [アドオン] パスに従ってプログラムを検索します。
[Action] セルをクリックし、[編集] メニューから [アクション] を選択して、[アクション] ダイアログ ボックスで特定の図形にアクションを設定することもできます (シェイプシート (ShapeSheet®) ウィンドウがアクティブな場合に使用できます)。
[アクション] ダイアログ ボックス
コマンドライン引数をプログラムに渡すには、Visio の RUNADDONWARGS 関数を使用します。この関数は VBA プログラムでは使用されず、アドオンでのみ使用されます。たとえば、myprog.exe という名前の外部プログラムを実行するには、次のように指定します。
= RUNADDONWARGS("myprog.exe", "引数")
[Events] セルの評価時にプログラムを実行するには、プログラムを起動するイベントの [Events] セルに数式を入力します。
シェイプシート ウィンドウの [イベント] セクション
たとえば、ユーザーが特定のマスタシェイプを図面にドロップするときに、VBA マクロを実行するには、次のような数式をマスタシェイプの [イベント] セクションの [EventDrop] セルに入力します。
= CALLTHIS("Layout")
ユーザーが特定の図形をダブルクリックしたときに、VBA マクロを実行するには、その図形の [イベント] セクションの [EventDblClick] セルに同じ数式を入力します。または、[ダブルクリック時の動作] タブで、特定の図形に対してダブルクリック イベントを設定します。これを実行するには、[書式] メニューから [基本動作] ダイアログ ボックスを開き、[ダブルクリック] タブで [マクロを実行] を選択して、ドロップダウン リストからマクロを選択します。
[基本動作] ダイアログ ボックスの [ダブルクリック時の動作] タブ
[イベント] セクションのイベントに応答する方法の詳細については、「第 7 章 図形動作の機能強化」を参照してください。
独自のメニュー コマンドまたはツールバー項目を Visio ユーザー インターフェースに追加して、プログラムを実行する際にそのメニュー コマンドまたはツールバー ボタンを使用できます。詳細については、「第 22 章 Visio ユーザー インターフェースのカスタマイズ」を参照してください。
VBA コードを実行するには、該当するイベント プロシージャの ThisDocument クラス モジュールにコードを記述します。たとえば、図面が開いたときにコードを実行するには、イベント プロシージャ DocumentOpened にコードを入力します。
次のような一般的な図面イベントがあります。BeforeDocumentClose、BeforePageDelete、BeforeShapeDelete、BeforeSelDelete (図形のセットが削除される前)、ShapeAdded、DocumentCreated、DocumentOpened、DocumentSaved、DocumentSavedAs。
オブジェクト イベントに応答する方法の詳細については、「第 21 章 Visio のイベントの処理」を参照してください。