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 タイプ ライブラリ] をクリックします。
      • Visio 2003 の場合は、[ Microsoft Visio 11.0 タイプ ライブラリ] をクリックします。
      • Visio 2002 の場合は、[ Microsoft Visio 2002 タイプ ライブラリ] をクリックします。

    メモ まだインストールしていない場合は、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
    
    

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

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

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

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

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

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

関連情報

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

Visual Studio を使用した Microsoft Office Development