OLE オートメーションをサポートする Windows アプリケーションは、それぞれが一揃いのプロパティとメソッドを備えた製品クラス一式を持っています。このようなアプリケーションでは、LotusScript® を実行する IBM® ソフトウェアアプリケーションと同様に、オブジェクトの作成と操作ができます。
例えば、Microsoft Visio は OLE オートメーションをサポートする Windows 用の描画パッケージです。次の例では、文字列の配列を作成します。各文字列には Visio の組織図上の名前と役職が入っています。
モジュール宣言で、文字列の動的な 1 次元配列を宣言します。
Dim manager() As String
GetManagers サブルーチンは、CreateObject 関数を使用して Visio Application クラスのインスタンスを作成し、そのインスタンスが Visio プログラム (VISIO.EXE) の新しいインスタンスを起動します。すでに稼働中のインスタンスを取得するには、GetObject 関数を使用します。
Visio Application オブジェクトには文書のコレクションが含まれます。各文書にはページのコレクションが、また各ページにはオブジェクトのコレクションが含まれます。Visio は、Application、Documents、Document、Pages、Page、Shapes、Shape のそれぞれに対するクラスを提供します。
GetManagers は Documents クラスの Open メソッドを使用して図形ファイルの Document オブジェクトを開きます。サブルーチンは文書内のページと各ページ上のオブジェクトを循環します。Name プロパティに「Manager」を持つ各オブジェクトについて、サブルーチンは配列の新規要素に Text プロパティの値を入れます。Manager オブジェクトの Text プロパティには、マネジャーの名前と役職が含まれます。
Sub GetManagers
' Use Variant variables for objects
Dim appVisioV As Variant, docObjV As Variant
Dim shapesObjV As Variant, shapeObjV As Variant
Dim orgchart As String
Dim iPage As Integer, iShape As Integer, _
iManager As Integer
Set appVisioV = CreateObject("visio.application")
orgchart$ = "c:¥visio¥drawings¥orgchart.vsd"
Set docObjV = appVisioV.Documents.Open(orgchart$)
For iPage% = 1 To docObjV.Pages.Count
Set shapesObjV = docObjV.Pages.Item(iPage%).Shapes
For iShape% = 1 To shapesObjV.Count
Set shapeObjV = shapesObjV.Item(iShape%)
If Instr(shapeObjV.Name, "Manager") > 0 Then
iManager% = iManager% + 1
ReDim Preserve manager$(1 To iManager%)
manager$(iManager%) = shapeObjV.Text
End If
Next iShape%
Next iPage%
appVisioV.Quit
End Sub
配列の内容を表示するには、次の For ループを使用します。
For i% = 1 To Ubound(manager$)
Print manager$(i%)
Next
プロパティやメソッドも含む Visio クラスの詳細については、Visio のマニュアルを参照してください。