OLE-Automatisierung in Visio verwenden

Einführung

Dieser Artikel enthält Informationen zur Verwendung von Microsoft Visual Basic oder Microsoft Visual Basic for Applications (VBA) zum Automatisieren von Microsoft Office Visio2from einem anderen Microsoft Office-Programm.

Microsoft bietet Programmierbeispiele lediglich zur Veranschaulichung, ohne ausdrückliche oder konkludente Gewährleistung. Dies beinhaltet, ist jedoch nicht beschränkt auf, konkludente Gewährleistungen der Tauglichkeit oder Eignung für einen bestimmten Zweck. Dieser Artikel setzt voraus, dass Sie mit der von Beispielen verwendeten Programmiersprache und den Tools, die zum Erstellen und Debuggen von Prozeduren verwendet werden, vertraut sind. Microsoft-Supportmitarbeiter können bei der Erläuterung der Funktionalität bestimmter Prozeduren helfen, sie werden jedoch diese Beispiele nicht verändern um eine erweiterte Funktionalität aufzuzeigen oder Prozeduren entwickeln, die Ihren Anforderungen entsprechen.
zurück zum Anfang

Übersicht über Automatisierung

Automatisierung (auch als OLE-Automatisierungbezeichnet) in Visual Basic werden Steuern ein Programm von einem anderen Programm oder externen Entwicklungstool. Sie können jedes beliebige Programm automatisieren, das Visual Basic- Objektmodellenthält. Ein Objektmodell stellt eine hierarchische Auflistung von der Anwendung Objekte verfügbar sind oder Visual Basic verfügbar .

Beispielsweise enthält das Objektmodell für Microsoft Visio Objekte wie:
  • Anwendungsobjekt/globales Objekt
  • Document-Objekt
  • Page-Objekt
  • Master-Objekt
  • Selection-Objekt
  • Shape-Objekt
  • Window-Objekt
Jedes dieser Objekte verfügt über einen Satz von Methoden und Eigenschaften in Visual Basic arbeiten. Ein Shape-Objekt kann beispielsweise ein Objekt auf einem Visio-Zeichenblatt darstellen, die Sie mit dem Zeiger auswählen können. Daher kann ein Shape-Objekt ein Shape, eine Gruppe, eine Führungslinie ein Steuerelement oder ein Objekt aus einem anderen Programm verknüpft, eingebettet oder in einer Visio-Zeichnung importiert.

zurück zum Anfang

Erste Schritte

Die Codebeispiele in diesem Artikel zeigen steuern Visio aus Microsoft Office 2007, Microsoft Office 2003, Microsoft Office 2002, Microsoft Visual Basic 6.0 oder ein Programm, das Visual Basic-Entwicklungstool enthält. Zum Automatisieren von Visio folgendermaßen Sie vier wichtigsten:
  1. Fügen Sie einen Verweis auf die Visio-Typbibliothek.
  2. Deklarieren Sie eine Variable als Visio-Objekttyp (in der Regel Visio.Application oder Visio.Documents).
  3. Objektvariablen, die Sie in Schritt 2 deklariert weisen Sie die Methode GetObject oder CreateObject zu.
  4. Verwenden Sie Eigenschaften, Methoden und untergeordneten Objekte des Visio-Objekts zum Automatisieren von Visio.
zurück zum Anfang

Schritt 1: Fügen Sie einen Verweis auf die Visio-Typbibliothek

Gehen Sie dazu auf der Visio-Typbibliothek von Microsoft Office-Anwendung wie Microsoft Office XP oder Office 2003 folgendermaßen vor:
  1. Zeigen Sie in Access, PowerPoint, Excel oder Word im Menü Extras auf Makros , und klicken Sie dann auf Visual Basic-Editor.
  2. Klicken Sie im Menü Extras auf Verweise.

    Hinweis Fügen Sie den Verweis mithilfe von Microsoft Visual Basic 6.0 klicken Sie im Menü Projekt auf Verweise .
  3. Klicken Sie in der Liste der Verfügbaren Referenzeneines der folgenden Kontrollkästchen je nach Version von Visio, die Sie verwenden:
    • Klicken Sie für Visio 2007 auf das Kontrollkästchen Microsoft Visio 12.0-Typbibliothek .
    • Für Visio 2003, aktivieren Sie das Kontrollkästchen Microsoft Visio 11.0-Typbibliothek .
    • Für Visio 2002, aktivieren Sie das Kontrollkästchen Microsoft Visio 2002 Type Library .
Wenn Sie Microsoft Visio-Typbibliothek Verweis hinzufügen, kann das Programm Microsoft Visio-Onlinehilfe und das Visio-Objektmodell zugreifen. Da die Verweise in jedem Projekt gespeichert werden, müssen Sie die Visio-Typbibliothek Referenz für jedes Visual Basic oder VBA-Projekt hinzufügen, das Sie Visio automatisieren möchten.

zurück zum Anfang

Schritt 2: Deklarieren der Objektvariablen

Visio-Objekt Variable Dimension eine Variable als einen spezifischen Visio-Objekttyp wie Visio.Application, Visio.Documents oder Visio.Page deklariert.

Der Objekttyp frühe Bindung aufgerufen wird, da die controlleranwendung verbindet explizit deklarieren oder bindet das Objekt auf der Visio-Anwendung zur Kompilierzeit statt zur Laufzeit. Dies ermöglicht den Zugriff auf Visio automatisch Listen und kontextsensitive Hilfe und kann der Code effizienter ausgeführt.

Weitere Informationen zur Bindung von Objekten klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:
138138 , Typ ID frühe Bindung möglich in VB für Apps

Beispiel Visual Basic Argument deklariert Variable AppVisio als ein Objekt des Typs Visio.Application:

   Dim AppVisio as Visio.Application
zurück zum Anfang

Schritt 3: Festlegen der Variablen

Die folgenden beiden Visual Basic-Methoden können Sie Visio aktivieren:
  • CreateObject
  • GetObject
Der Hauptunterschied ist, dass die CreateObject-Methode eine neue Instanz von Visio erstellt und die GetObject-Methode eine bereits ausgeführte Instanz von Visio verwendet. GetObject können auch Ihre Objektvariable auf ein spezifisches Visio-Dokument setzen.

Das folgende Beispiel Argument wird die Variable AppVisio auf der Visio-Anwendung zu:
   Dim AppVisio as Visio.Application
Set AppVisio = CreateObject("Visio.Application")

Möglicherweise möchten eine bestehende Instanz von Visio verwenden, wenn Visio bereits ausgeführt wird eine neue Instanz erstellen, wenn Visio nicht ausgeführt wird. Hierzu erstellen Sie eine Fehlerbehandlung, die die Methode CreateObject verwendet, falls die Methode GetObject fehlschlägt, wie im folgenden Code dargestellt:
   Dim AppVisio As Visio.Application
On Error Resume Next

Set AppVisio = GetObject(, "visio.application")

If AppVisio Is Nothing Then
Set AppVisio = CreateObject("visio.application")
End If


Hinweis Die CreateObject-Funktion können Sie eine Visio-Instanz erstellen, die nicht sichtbar ist. Beispiel:
Set AppVisio = CreateObject("Visio.InvisibleApp")
Dann können Visible-Eigenschaft des Application-Objekts steuern, ob die Instanz sichtbar ist.

Sie können das InvisibleApp-Objekt mit der CreateObject-Funktion. Versuche die GetObject-Funktion verwenden, schlagen fehl. Das Objekt InvisibleApp ist nicht verfügbar in Visio-Versionen vor Microsoft Visio 2000.

zurück zum Anfang

Schritt 4: Verwenden der Visio-Objekte, Methoden und Eigenschaften

Nach Abschluss der Schritte 1 bis 3 können der Visio-Objektvariablen Sie Visio automatisieren.

Das folgende Beispielmakro verwendet Automatisierung, starten Sie Visio eine neue Zeichnung (Dokument) basierend auf der Vorlage Standarddiagramm erstellen, wird ein Rechteck fügt Text ein und speichert die Zeichnung und beendet Visio.
Sub AutoVisio()

Dim AppVisio As Visio.Application ' Declare an Instance of Visio.
Dim docsObj As Visio.Documents ' Documents collection of instance.
Dim DocObj As Visio.Document ' Document to work in.
Dim stnObj As Visio.Document ' Stencil that contains master.
Dim mastObj As Visio.Master ' Master to drop.
Dim pagsObj As Visio.Pages ' Pages collection of document.
Dim pagObj As Visio.Page ' Page to work in.
Dim shpObj As Visio.Shape ' Instance of master on page.

' Create an instance of Visio and create a document based on the
' Basic Diagram template. It doesn't matter if an instance of
' Visio is already running, CreateObject will run a new one.
Set AppVisio = CreateObject("visio.application")

Set docsObj = AppVisio.Documents

' Create a document based on the Basic Diagram template that
' automatically opens the Basic Shapes stencil.
Set DocObj = docsObj.Add("Basic Diagram.vst")

Set pagsObj = AppVisio.ActiveDocument.Pages

' A new document always has at least one page, whose index in the
' Pages collection is 1.
Set pagObj = pagsObj.Item(1)

Set stnObj = AppVisio.Documents("Basic Shapes.vss")
Set mastObj = stnObj.Masters("Rectangle")

' Drop the rectangle in the approximate middle of the page.
' Coordinates passed with the Drop method are always inches.
Set shpObj = pagObj.Drop(mastObj, 4.25, 5.5)

' Set the text of the rectangle.
shpObj.Text = "This is some text."

' Save the drawing and quit Visio. The message pauses the program
' so you can see the Visio drawing before the instance closes.
DocObj.SaveAs "MyDrawing.vsd"
MsgBox "Drawing finished!", , "AutoVisio (OLE) Example"

' Quit Visio.
AppVisio.Quit

' Clear the variable from memory.
Set AppVisio = Nothing

End Sub

zurück zum Anfang

Referenzen

Microsoft Visio Developer-Websites

Weitere Informationen zur Automatisierung von Visio finden Sie auf der folgenden Microsoft-Website:Weitere Informationen zu Microsoft Visio Solutions finden Sie auf der folgenden Microsoft-Website:

Visio-Software Development Kits

Herunterladen von Visio 2002 Software Development Kit finden Sie auf der folgenden Microsoft-Website:
Herunterladen von Visio 2003 Software Development Kit finden Sie auf der folgenden Microsoft-Website:

NewsGroups

Folgende Peer-to-Peer-Newsgroup steht mit anderen Benutzern von Visual Basic for Applications-Interaktion:
microsoft.public.vb.ole.automation
microsoft.public.visio.developer.vba

Visual Basic-Hilfe

Weitere Informationen zur Verwendung die Funktion CreateObject im Visual Basic-Editor klicken Sie im Menü Hilfe auf Microsoft Visual Basic-Hilfe klicken Sie auf Suchen , um die Themen anzuzeigen und geben Sie Createobject-Funktion in das Suchfeld ein .

Weitere Informationen zur Verwendung von GetObject -Funktion in Visual Basic-Editor klicken Sie im Menü Hilfe auf Microsoft Visual Basic-Hilfe klicken Sie auf Suchen , um die Themen anzuzeigen und geben Sie Getobject-Funktion in das Suchfeld ein .

zurück zum Anfang
Eigenschaften

Artikelnummer: 309603 – Letzte Überarbeitung: 20.01.2017 – Revision: 2

Feedback