Visual Basic .NET を使用して Visio を自動化する方法

概要

この記事では、Visual Basic .NET を使用して Visio を自動化する方法について説明します。

詳細

この記事のサンプルオートメーションコードは、次のことを行います。

  • 配列に格納されているデータに基づいて、Visio 図面ページに単純なフローチャートを描画します。
  • ページの名前を示します。
  • ドキュメントを保存します。

配列は2次元: 最初の要素には図形の名前が含まれ、2番目の要素には図形のテキストが含まれます。

サンプルの Visual Basic .NET アプリケーションを作成する手順

  1. Microsoft Visual Studio .NET を起動します。 [ファイル] メニューの [新規作成] をクリックし、[プロジェクト] をクリックします。 [プロジェクトの種類] で [Visual Basic プロジェクト] をクリックし、[テンプレート] の下にある [Windows アプリケーション] をクリックします。 Form1 は既定で作成されます。

  2. Visio オブジェクトライブラリへの参照を追加します。 これを行うには、次の手順を実行します。

    1. [ プロジェクト] メニューの [ 参照の追加] をクリックします。
    2. [COM] タブで、次のいずれかのオプションをクリックし、[選択] をクリックします。
      • Visio 2007 の場合は、[ Microsoft Visio 12.0 Type Library] をクリックします。
      • Visio 2003 の場合は、[ Microsoft Visio 11.0 Type Library] をクリックします。
      • Visio 2002 の場合は、[ Microsoft Visio 2002 Type Library] をクリックします。

    メモまだ行っていない場合は、microsoft Office XP プライマリ相互運用機能アセンブリ (Pia) をダウンロードしてインストールすることをお勧めします。

  3. [参照の追加] ダイアログボックスで [OK] をクリックして、選択内容を確定します。 選択したライブラリのラッパーを生成するかどうかを確認するメッセージが表示されたら、[はい] をクリックします。

  4. [表示] メニューの [ツールボックス] をクリックします。 Form1 にボタンを追加します。

  5. [Button1] をダブルクリックします。 Button1 の Click イベントのコードウィンドウが開きます。

  6. [コード] ウィンドウで、次のコードを置き換えます。

    Private Sub Button1_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles Button1.Click
    End Sub
    
    

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
          System.EventArgs) Handles Button1.Click
       fBuildArray()
       fBuildFlowchart()
    End Sub
    
    
  7. [プロジェクト] メニューの [モジュールの追加] をクリックします。

  8. Module1 の内容を次のように置き換えます。

    Module Module1
       Public aryValues(5, 2) As String
       Sub fBuildArray()
          aryValues(0, 0) = "Terminator"
          aryValues(1, 0) = "Document"
          aryValues(2, 0) = "Decision"
          aryValues(3, 0) = "Process"
          aryValues(4, 0) = "Terminator"
    
    aryValues(0, 1) = "Begin Routing Process"
          aryValues(1, 1) = "Gather Customer Data"
          aryValues(2, 1) = "Supported Issue?"
          aryValues(3, 1) = "Dispatch to Queue"
          aryValues(4, 1) = "End Routing Process"
       End Sub
    
    Sub fBuildFlowchart()
          Dim vApp As Visio.Application
          Dim vDoc As Visio.Document
          Dim vFromShape As Visio.Shape
          Dim vToShape As Visio.Shape
          Dim vConnector As Visio.Shape
          Dim vFlowChartMaster As Visio.Master
          Dim vConnectorMaster As Visio.Master
          Dim vStencil As Visio.Document
          Dim dblXLocation As Double
          Dim dblYLocation As Double
          Dim vBeginCell As Visio.Cell
          Dim vEndCell As Visio.Cell
          Dim iCount As Integer
          Const TEMPLATEPATH = "C:\Program Files\Microsoft Office\Visio10\1033\" _
             & "Solutions\Flowchart\Basic Flowchart Shapes (US units).vss"
    
    ' Change this constant to match your choice of location and file name.
          Const SAVENEWFILE = "C:\Simpleflowchart.vsd"
    
    ' Start point measured from the bottom left corner.
          dblXLocation = 4.25
          dblYLocation = 8.5
    
    vApp = New Visio.Application()
          'Create a new document; note the empty string.
          vDoc = vApp.Documents.Add("")
          vStencil = vApp.Documents.OpenEx(TEMPLATEPATH, 4)
    
    For iCount = LBound(aryValues) To UBound(aryValues) - 1
             vFlowChartMaster = vStencil.Masters(aryValues(iCount, 0))
             vToShape = vApp.ActivePage.Drop(vFlowChartMaster, _
                dblXLocation, dblYLocation)
             vToShape.Text = aryValues(iCount, 1)
             If Not vFromShape Is Nothing Then
                If vConnectorMaster Is Nothing Then
                   vConnectorMaster = vStencil.Masters("Dynamic Connector")
                End If
                vConnector = vApp.ActivePage.Drop(vConnectorMaster, 0, 0)
                vBeginCell = vConnector.Cells("BeginX")
                vBeginCell.GlueTo(vFromShape.Cells("AlignBottom"))
                vEndCell = vConnector.Cells("EndX")
                vEndCell.GlueTo(vToShape.Cells("AlignTop"))
                vConnector.SendToBack()
             End If
             vFromShape = vToShape
             vToShape = Nothing
             dblYLocation = dblYLocation - 1.5
          Next
          vDoc.Pages(1).Name = "Flowchart Example"
          Try
             ' Delete the previous version of the file.
             Kill(SAVENEWFILE)
          Catch
          End Try
          vDoc.SaveAs(SAVENEWFILE)
          vDoc.Close()
          vApp.Quit()
          vDoc = Nothing
          vApp = Nothing
          GC.Collect()
       End Sub
    End Module
    
    

    メモTEMPLATEPATH の定数を、Visio のインストールフォルダーを指すように変更します。 既定では、この場所は次のいずれかになります。

    • Office Visio 2007 では、既定の場所は C:\Program C:\Program Office\Visio12\1033\ BASFLO_U .VSS です。

    • Visio 2003 の場合、このファイルの既定の場所は C:\Program C:\Program Office\Visio11\1033\ BASFLO_U .VSS です。

    • Visio 2002 の場合、このファイルの既定の場所は C:\Program C:\Program Visio\Visio10\1033\Solutions\Flowchart\Basic フローチャート図形 (米単位) .vss です。

  9. [デバッグ] メニューの [開始] をクリックします。

  10. Visio で C:\ Simpleflowchart.vsd を開き、結果を確認します。

References

詳細については、次の Microsoft Developer Network (MSDN) Web サイトを参照してください。

Visual Studio を使用した Microsoft Office 開発