OLE オートメーション

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 のマニュアルを参照してください。