Automatisieren von Visio mit Visual Basic .NET
Zusammenfassung
In diesem Artikel wird veranschaulicht, wie Visio mit Visual Basic .NET automatisiert wird.
Weitere Informationen
Der Beispielautomatisierungscode in diesem Artikel führt folgende Aktionen aus:
- Zeichnet ein einfaches Flussdiagramm auf dem Visio-Zeichenblatt, das auf Daten basiert, die in einem Array enthalten sind.
- Benennt die Seite.
- Speichert das Dokument.
Das Array ist zweidimensional: Das erste Element enthält den Namen der Form, und das zweite Element enthält den Text der Form.
Schritte zum Erstellen der Visual Basic .NET-Beispielanwendung
Starten Sie Microsoft Visual Studio .NET. Klicken Sie im Menü "Datei" auf "Neu" und dann auf "Projekt". Klicken Sie unter "Projekttypen" auf "Visual Basic-Projekte" und dann unter "Vorlagen" auf "Windows-Anwendung". Form1 wird standardmäßig erstellt.
Fügen Sie einen Verweis auf die Visio-Objektbibliothek hinzu. Gehen Sie dazu wie folgt vor:
- On the Project menu, click Add Reference.
- Klicken Sie auf der Registerkarte COM auf eine der folgenden Optionen, und klicken Sie auf "Auswählen":
- Klicken Sie für Visio 2007 auf die Typbibliothek von Microsoft Visio 12.0.
- Klicken Sie für Visio 2003 auf die Typbibliothek von Microsoft Visio 11.0.
- Klicken Sie für Visio 2002 auf "Microsoft Visio 2002-Typbibliothek".
Hinweis Wenn dies noch nicht geschehen ist, empfiehlt Microsoft, die primären Interopassemblys (PRIMARY Interop Assemblies, PIAs) von Microsoft Office XP herunterzuladen und zu installieren.
Klicken Sie im Dialogfeld "Verweise hinzufügen" auf "OK", um Ihre Auswahl zu übernehmen. Wenn Sie aufgefordert werden, Wrapper für die ausgewählten Bibliotheken zu generieren, klicken Sie auf "Ja".
Klicken Sie im Menü "Ansicht" auf "ToolBox". Fügen Sie formular1 eine Schaltfläche hinzu.
Doppelklicken Sie auf Schaltfläche1. Das Codefenster wird beim Click-Ereignis für Button1 geöffnet.
Ersetzen Sie im Codefenster den folgenden Code
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click End Sub
mit:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click fBuildArray() fBuildFlowchart() End Sub
Klicken Sie im Menü "Projekt" auf "Modul hinzufügen".
Ersetzen Sie den Inhalt von Modul1 durch Folgendes:
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
Hinweis Ändern Sie die TEMPLATEPATH-Konstante so, dass sie auf Ihren Visio-Installationsordner verweist. Standardmäßig ist der Speicherort einer der folgenden:
Für Office Visio 2007 lautet der Standardspeicherort "C:\Programme\Microsoft Office\Visio12\1033\BASFLO_U.VSS".
Für Visio 2003 lautet der Standardspeicherort für diese Datei "C:\Programme\Microsoft Office\Visio11\1033\BASFLO_U.VSS".
Für Visio 2002 lautet der Standardspeicherort für diese Datei "C:\Program Files\Microsoft Visio\Visio10\1033\Solutions\Flowchart\Basic Flowchart Shapes (US units).vss".
Klicken Sie im Menü "Debuggen" auf "Start".
Öffnen Sie "C:\Simpleflowchart.vsd" in Visio, um die Ergebnisse anzuzeigen.
References
Weitere Informationen finden Sie auf der folgenden Microsoft Developer Network (MSDN)-Website: