Page.ShapeIDsToUniqueIDs-Methode (Visio)

Gibt ein Array eindeutiger IDs von Shapes auf dem Zeichenblatt zurück, wie durch ihre Shape-IDs angegeben.

Syntax

Ausdruck. ShapeIDsToUniqueIDs( _ShapeIDs()_ , _UniqueIDArgs_ , _GUIDs()_ )

Ausdruck Ein Ausdruck, der ein Page-Objekt zurückgibt.

Parameter

Name Erforderlich/Optional Datentyp Beschreibung
ShapeIDs() Erforderlich Long Ein Array vom Typ Long von Shape-IDs, die einem Satz von Shapes auf dem aktiven Zeichenblatt entsprechen.
UniqueIDArgs Erforderlich VisUniqueIDArgs Dient zum Abrufen, Löschen oder Erstellen der eindeutigen ID eines Shape-Objekts. Mögliche Werte finden Sie in den Hinweisen.
GUIDs() Erforderlich String Ausgabeparameter. Ein leeres Array, das die Methode mit eindeutigen IDs vom Typ String füllt, die den in ShapeIDs() angegebenen Formen entsprechen.

Rückgabewert

Nichts

Bemerkungen

Microsoft Visio identifiziert Shapes anhand von zwei verschiedenen IDs: Shape-IDs und eindeutigen IDs. Shape-IDs sind numerische Werte, durch die Shapes innerhalb des Bereichs eines einzelnen Zeichenblatts eindeutig identifiziert werden. In Bezug auf einen größeren Bereich sind sie jedoch nicht eindeutig.

Eindeutige IDs sind GUIDs (Globally Unique Identifier). Sie sind innerhalb des Anwendungsbereichs eindeutig.

Zum Konvertieren zwischen Form-IDs und eindeutigen IDs können Sie zwei Methoden des Page-Objekts verwenden: ShapeIDsToUniqueIDs und UniqueIDsToShapeIDs.

Standardmäßig verfügt ein Shape nicht über eine eindeutige ID. Ein Shape erhält nur dann eine eindeutige ID, wenn Sie seine Shape.UniqueID-Eigenschaft festlegen. Wenn ein Shape-Objekt eine eindeutige ID besitzt, hat kein anderes Shape in irgendeinem Dokument dieselbe ID.

Der UniqueIDArgs-Parameter dient zum Festlegen und Steuern des Verhaltens der UniqueID-Eigenschaft für alle Shapes in ShapeIDs(). UniqueIDArgs-Parameter sollten einen der folgenden Werte aufweisen, die in der Visio-Typbibliothek in VisUniqueIDArgs deklariert sind.

Konstante Wert Beschreibung
visGetGUID 0 Gibt die eindeutige ID-Zeichenfolge nur dann zurück, wenn das Shape bereits über eine eindeutige ID verfügt. Andernfalls wird eine leere Zeichenfolge ("") zurückgegeben.
visGetOrMakeGUID 1 Gibt die eindeutige ID-Zeichenfolge des Shapes zurück. Wenn das Shape noch keine eindeutige ID besitzt, wird ihm eine zugewiesen, bevor die neue ID zurückgegeben wird.
visDeleteGUID 2 Löscht die eindeutige ID eines Shapes und gibt eine leere Zeichenfolge ("") zurück.
visGetOrMakeGUIDWithUndo 3 Gibt die eindeutige ID-Zeichenfolge des Shapes zurück. Wenn das Shape noch nicht über eine eindeutige ID verfügt, weist dem Shape eine zu und gibt die neue ID zurück. Nicht rückgängig.
visDeleteGUIDWithUndo 4 Löscht die eindeutige ID eines Shapes und gibt eine leere Zeichenfolge ("") zurück. Nicht rückgängig.

Beispiel

Das folgende VBA-Makro (Microsoft Visual Basic for Applications) zeigt, wie die ShapeIDsToUniqueIDs-Methode verwendet wird, um die eindeutigen IDs der Shapes auf dem An die -Methode übergebenen Zeichenblatt zu bestimmen. Es durchläuft alle Formen auf dem aktiven Zeichenblatt, wobei die Shape.UniqueID-Eigenschaft verwendet wird, um die Shape-IDs der Shapes abzurufen, und anschließend wird ein Array dieser IDs als ShapeIDsToUniqueIDs()-Parameter an die ShapeIDsToUniqueIDs-Methode übergeben, um die eindeutigen IDs der Shapes abzurufen. Für den UniqueIDArgs-Parameter übergibt er den Wert visGetOrMakeGUID und weist Visio an, eine eindeutige ID für jedes Shape zu erstellen, das noch keine hat. Es druckt die eindeutigen IDs und Shape-IDs im Direktfenster.

Öffnen Sie vor dem Ausführen dieses Makros eine Visio-Zeichnung, und platzieren Sie mehrere Shapes auf dem aktiven Zeichenblatt.

Public Sub ShapeIDsToUniqueIDs_Example()
    Dim vsoShape As Visio.Shape 
    Dim intArrayCounter As Integer 
     
    intShapeCount = ActivePage.Shapes.Count 
     
    ReDim alngShapeIDs(intShapeCount - 1) As Long 
    ReDim astrUniqueIDs(intShapeCount - 1) As String 
     
    intArrayCounter = 0 
         
    For Each vsoShape In ActivePage.Shapes 
        alngShapeIDs(intArrayCounter) = vsoShape.ID 
        Debug.Print alngShapeIDs(intArrayCounter) 
        intArrayCounter = intArrayCounter + 1 
    Next 
     
    ActivePage.ShapeIDsToUniqueIDs alngShapeIDs, visGetOrMakeGUID, astrUniqueIDs 
     
    intArrayCounter = 0 
     
    For intArrayCounter = LBound(astrUniqueIDs) To UBound(astrUniqueIDs) 
        Debug.Print astrUniqueIDs(intArrayCounter) 
    Next 
 
End Sub

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.