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
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.
Voeg een verwijzing toe naar de Visio-objectbibliotheek. Ga hiervoor als volgt te werk:
- Klik in het menu Project op Verwijzing toevoegen.
- 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.
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.
Klik in het menu Beeld op ToolBox. Een knop toevoegen aan Formulier1.
Dubbelklik op Knop1. Het codevenster wordt geopend bij de klik-gebeurtenis voor Knop1.
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
Klik in het menu Project op Module toevoegen.
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.
Klik in het menu Foutopsporing op Start.
Open C:\Simpleflowchart.vsd in Visio om de resultaten te bekijken.
Verwijzingen
Zie de volgende MSDN-website (Microsoft Developer Network) voor meer informatie: