第 23 章 VISIO ソリューションでのACTIVEX コントロールの使用
ActiveX コントロールは、通常、プログラムによって実行時にコントロールを操作するプロパティとメソッドを提供します。たとえば、リストボックス コントロールには、選択されたアイテムのインデックスを返す ListIndex プロパティと、そのインデックスにあるアイテムのテキストを返す Text プロパティがあります。
このセクションの内容...
コントロールには、Visio® 名と Microsoft Visual Basic for Applications (VBA) 名の 2 つの名前があります。初期設定では、これらの名前は同じで、コントロールの種類と一意な名前にするための整数とを組み合わせた名前になっています。たとえば、図面に最初に挿入したリストボックス コントロールには、ListBox1 という名前が付けられ、この同じ名前を使用して、VBA コードと Visio の両方でコントロールを参照できます。Visio 図形には別の命名規約が使用されます。図形の命名規約の詳細については、「第 16 章 Visio の Document オブジェクト、Page オブジェクト、および Shape オブジェクトの使い方」を参照してください。
初期設定では、同一の値が設定されますが、2 つの名前はプログラム的にはまったく異なり、それぞれを入れ替えて使用することはできません。
ヒント 一方の名前をデフォルトの名前から変更した場合は、コントロールの VBA 名と Visio 名が同一になるように、もう一方の名前も変更することをお勧めします。
Visio の Document、Page、または Master オブジェクトの OLEObjects コレクションから、コントロールを表す Shape オブジェクトを取得することができます。コントロールは、ぺージまたはマスタシェイプの Shapes コレクションからも取得できますが、OLEObjects コレクションを使用した方が簡単です。これは、OLEObjects コレクションにはリンク オブジェクトや埋め込みオブジェクトだけしかないのに対して、Shapes コレクションにはリンク オブジェクトや埋め込みオブジェクトの他に Visio 図形も含まれおり、コレクション内のオブジェクト数が多いためです。
OLEObjects コレクションには、OLEObject オブジェクトがあります。このオブジェクトは、Visio のファイル (図面)、ぺージ、マスタシェイプ、およびすべての ActiveX コントロール内にある各リンク オブジェクトまたは埋め込みオブジェクトを表します。OLEObject の Object プロパティが返すオブジェクトへの参照を使って、リンク オブジェクトまたは埋め込みオブジェクトのプロパティとメソッドにアクセスすることができます。
OLEObjects コレクション内のコントロール オブジェクトは、コレクション内のインデックスまたは Visio のコントロールに割り当てられている名前を使用して検索することができます。「コントロール名について」で説明したように、初期設定では、この名前はコントロールの VBA オブジェクト名と同じです。たとえば、次のステートメントは ListBox1 という名前の図形を取得します。
Dim g_listbox As Object
Set g_listbox = _
Document.OLEObjects("ListBox1").Object
すべてのコントロールに対して同じ操作を実行する場合は、OLEObjects コレクション内のすべてのオブジェクトについて同じ処理を繰り返し、各 OLEObjects オブジェクトの ForeignType プロパティを調べて、visTypeIsControl ビットが設定されているかどうかを確認します。