第 14 章 オートメーションと VISIO オブジェクト モデル
オブジェクトへの参照を取得したら、そのオブジェクトのプロパティの値を設定/取得したり、メソッドを使用してオブジェクトを操作することができます。使用するプロパティやメソッドの戻り値および引数は、プログラム内で変数として宣言する必要があります。これらの変数には、オブジェクト参照、または文字列や数値などの値を使用できます。たとえば、Shape オブジェクトの Text プロパティの値は、文字列 (対応する図形内に表示されるテキスト) です。
このセクションの内容...
プロパティやメソッドからの戻り値として変数を宣言する場合は、明示的なデータ型か、Microsoft Visual Basic のデータ型である Variant 型で変数を宣言し、単純な代入ステートメントを使用して値を変数に割り当てます。
プロパティやメソッドへの引数として変数を宣言する場合も、これと同じです。オブジェクトにはオブジェクト変数を使用し、その他の種類の値には Variant 型または該当する明示的なデータ型を使用します。
オブジェクト変数を宣言する方法の詳細については、「セクション 3 Visio オブジェクトの取得と解放」のセクションの「オブジェクト変数の宣言」を参照してください。また、すべてのプロパティ変数およびメソッド変数の詳細については、Visio® 製品付属のオンラインヘルプ「オートメーション リファレンス」を参照してください。
プロパティを使用してオブジェクトの表示を決定する場合もあります。たとえば、次のステートメントでは、Shape オブジェクトの Text プロパティ (図面のテキスト) を設定しています。
shpObj.Text = "Hello World!"
次のステートメントでは、Shape オブジェクトの Text プロパティを取得しています。
shpText = shpObj.Text
引数を指定できるプロパティもあります。たとえば、Shape オブジェクトの Cells プロパティには、対応する図形内の特定のセルを示す文字列式を指定できます。プロパティに引数を指定する場合は、引数を丸括弧で囲みます。たとえば、次のステートメントは [PinX] セルの数式を設定しています。
shpObj.Cells("PinX").Formula = "10 mm"
次のステートメントは [PinX] セルの数式を取得して、その数式を strPinX に格納しています。
strPinX = shpObj.Cells("PinX").Formula
Visio オブジェクトのほとんどのプロパティは、読み取り/書き込み可能です。つまり、プロパティの値を取得することも設定することもできます。一部のプロパティは読み取り専用で、取得はできますが、設定はできません。たとえば、オブジェクトの Application プロパティを取得して、そのオブジェクトが含まれる Visio インスタンスを確認することはできますが、Application プロパティを変更してそのオブジェクトを別のインスタンスのオブジェクトにすることはできません。
値の設定のみが可能な書き込み専用プロパティもいくつかあります。これらのプロパティは、通常、対応する読み取り/書き込み可能プロパティに代わって特別な処理を行います。たとえば、Formula プロパティを設定して、セル内の数式を変更できますが、数式が GUARD 関数で保護されている場合は変更できません。その場合は、FormulaForce プロパティを使用して数式を設定する必要があります。ただし、数式が保護されているかどうかにかかわらず、FormulaForce を使用してセルの数式を取得することはできないため、セルの数式の取得には Formula プロパティを使用する必要があります。
読み取り/書き込み用、読み取り専用、または書き込み専用プロパティを含むプロパティとメソッドの詳細については、Visio 製品付属のオンラインヘルプ「開発者用リファレンス ([ヘルプ] メニューから [開発者用リファレンス] を選択)」を参照してください。
ほとんどのオブジェクトにはデフォルトのプロパティがあります。このプロパティは、オブジェクトの参照時に特にプロパティを指定しない場合に使用されます。たとえば、Document オブジェクトのデフォルト プロパティは Name です。このため、次の 2 つのステートメントは同じ値を返します。
docName = Documents(5).Name |
'long format |
ほとんどのコレクションのデフォルト プロパティは Item です。このため、コレクションからオブジェクトを指定する場合は、次のようなステートメントを使用できます。
Set shpObj = shpsObj.Item(1) |
'long format |
Visio オブジェクトのデフォルト プロパティを確認するには、Visio 製品付属のオンラインヘルプ「オートメーション リファレンス」を参照してください。オブジェクト ブラウザでは、Visio オブジェクトのデフォルト プロパティは青い点で印が付けられています。オブジェクト ブラウザの詳細については、「第 15 章 Visio での Microsoft VBA プログラミング」の「オブジェクト ブラウザの使用」を参照してください。
メソッドの多くは Visio のコマンドに対応しています。たとえば、Shape オブジェクトの Copy メソッドは、Visio で図形を選択して [編集] メニューから [コピー] を選択するのと同じ動作を実行します。その他のメソッドも Visio コマンドの動作に対応しています。また、Window オブジェクトの Activate メソッドは、対応するウィンドウをアクティブするために使用しますが、これはマウスでそのウィンドウをクリックするのと同じです。
メソッドを使用するための構文はプロパティを設定するときの構文に似ています。たとえば、メソッドを使用して Page オブジェクトを作成すると、次の例のように、メソッドは新しく作成されたオブジェクトへの参照を返します。通常、オブジェクトを作成しないメソッドは値を返しません。
Dim pagObj As Visio.Page
Set pagObj = pagsObj.Add