Visio automatiseren met Visual Basic .NET

Samenvatting

In dit artikel wordt gedemonstreerd hoe u Visio kunt automatiseren met behulp van Visual Basic .NET.

Meer informatie

De voorbeeldcode voor automatisering in dit artikel doet het volgende:

  • Hiermee tekent u een eenvoudig stroomdiagram op de Visio-tekenpagina die is gebaseerd op gegevens die zich in een matrix bevinden.
  • Geeft de pagina een naam.
  • Hiermee slaat u het document op.

De matrix is tweedimensionaal: het eerste element bevat de naam van de shape en het tweede element bevat de tekst van de shape.

Stappen voor het maken van de Visual Basic .NET-voorbeeldtoepassing

  1. Start Microsoft Visual Studio .NET. Klik in het menu Bestand op Nieuw en klik vervolgens op Project. Klik onder Projecttypen op Visual Basic Projects en klik vervolgens onder Sjablonen op Windows-toepassing. Form1 wordt standaard gemaakt.

  2. Voeg een verwijzing toe naar de Visio-objectbibliotheek. Ga hiervoor als volgt te werk:

    1. Klik in het menu Project op Verwijzing toevoegen.
    2. Klik op het tabblad COM op een van de volgende opties en klik op Selecteren:
      • Klik voor Visio 2007 op Microsoft Visio 12.0 Type Library.
      • Klik voor Visio 2003 op Microsoft Visio 11.0 Type Library.
      • Klik voor Visio 2002 op Microsoft Visio 2002-typebibliotheek.

    Opmerking Als u dit nog niet hebt gedaan, raadt Microsoft u aan de PPA's (Primary Interop Assemblies) van Microsoft Office XP te downloaden en te installeren.

  3. Klik op OK in het dialoogvenster Verwijzingen toevoegen om uw selecties te accepteren. Als u een prompt ontvangt om wrappers te genereren voor de bibliotheken die u hebt geselecteerd, klikt u op Ja.

  4. Klik in het menu Beeld op ToolBox. Een knop toevoegen aan Formulier1.

  5. Dubbelklik op Knop1. Het codevenster wordt geopend bij de klik-gebeurtenis voor Knop1.

  6. Vervang in het codevenster de volgende code

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

    Met:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
          System.EventArgs) Handles Button1.Click
       fBuildArray()
       fBuildFlowchart()
    End Sub
    
    
  7. Klik in het menu Project op Module toevoegen.

  8. Vervang de inhoud van Module1 door het volgende:

    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
    
    

    Opmerking Wijzig de TEMPLATEPATH-constante zodat deze verwijst naar uw Visio-installatiemap. Standaard is de locatie een van de volgende:

    • Voor Office Visio 2007 is de standaardlocatie C:\Program Files\Microsoft Office\Visio12\1033\BASFLO_U.VSS.

    • Voor Visio 2003 is de standaardlocatie voor dit bestand C:\Program Files\Microsoft Office\Visio11\1033\BASFLO_U.VSS

    • Voor Visio 2002 is de standaardlocatie voor dit bestand C:\Program Files\Microsoft Visio\Visio10\1033\Solutions\Flowchart\Basic Flowchart Shapes (US units).vss.

  9. Klik in het menu Foutopsporing op Start.

  10. Open C:\Simpleflowchart.vsd in Visio om de resultaten te bekijken.

Verwijzingen

Zie de volgende MSDN-website (Microsoft Developer Network) voor meer informatie:

Microsoft Office-ontwikkeling met Visual Studio