Share via


Método Page.ShapeIDsToUniqueIDs (Visio)

Devuelve una matriz de identificadores únicos de formas en la página, según lo especificado por sus identificadores de forma.

Sintaxis

expresión. ShapeIDsToUniqueIDs( _ShapeIDs()_ , _UniqueIDArgs_ , _GUIDs()_ )

Expresión Expresión que devuelve un objeto Page .

Parameters

Nombre Obligatorio/opcional Tipo de datos Descripción
ShapeIDs() Necesario Long Matriz de tipo Long de identificadores de forma correspondientes a un conjunto de formas en la página de dibujo activa.
UniqueIDArgs Obligatorio VisUniqueIDArgs Obtiene, elimina o crea el identificador único de un objeto Shape. Vea la sección Comentarios para los valores posibles.
GUID() Obligatorio String Parámetro de salida. Matriz vacía que el método rellena con identificadores únicos de tipo String correspondientes a las formas especificadas en ShapeIDs()

Valor devuelto

Nothing

Comentarios

Microsoft Visio identifica las formas mediante dos identificadores diferentes: identificadores de formas e identificadores únicos. Los identificadores de formas son numéricos e identifican de forma única las formas dentro del ámbito de una página de dibujo individual. No obstante, no son únicos dentro de un ámbito más amplio.

Los identificadores únicos son identificadores únicos globales (GUID). Son únicos dentro del ámbito de la aplicación.

Para convertir entre identificadores de forma e identificadores únicos, puede usar dos métodos del objeto Page , ShapeIDsToUniqueIDs y UniqueIDsToShapeIDs.

De forma predeterminada, una forma no tiene un identificador único. Una forma adquiere un identificador único solo si establece su propiedad Shape.UniqueID . Si un objeto Shape tiene un identificador único, ninguna otra forma de cualquier otro documento tendrá el mismo identificador.

El parámetro UniqueIDArgs establece y controla el comportamiento de la propiedad UniqueID para todas las formas de ShapeIDs(). UniqueIDArgs debe tener uno de los valores siguientes declarados en la biblioteca de tipos de Visio en VisUniqueIDArgs.

Constante Valor Descripción
visGetGUID 0 Devuelve la cadena de identificador único sólo si la forma ya tiene un identificador único. En caso contrario, devuelve una cadena de longitud cero ("").
visGetOrMakeGUID 1 Se devuelve la cadena de identificador único de la forma. Si la forma no tiene todavía un identificador único, se asigna uno a la forma y se devuelve el nuevo identificador.
visDeleteGUID 2 Elimina el identificador único de una forma y devuelve una cadena de longitud cero ("").
visGetOrMakeGUIDWithUndo 3 Se devuelve la cadena de identificador único de la forma. Si la forma aún no tiene un identificador único, asigna uno a la forma y devuelve el nuevo identificador. No se puede deshacer.
visDeleteGUIDWithUndo 4 Borra el identificador único de una forma y devuelve una cadena de longitud cero (""). No se puede deshacer.

Ejemplo:

La siguiente macro de Microsoft Visual Basic para Aplicaciones (VBA) muestra cómo usar el método ShapeIDsToUniqueIDs para determinar los identificadores únicos de las formas de la página que se pasan al método . Recorre en iteración todas las formas de la página de dibujo activa, utilizando la propiedad Shape.UniqueID para obtener los identificadores de forma de las formas y, a continuación, pasa una matriz de esos identificadores al método ShapeIDsToUniqueIDs como parámetro ShapeIDs() para obtener los identificadores únicos de las formas. Para el parámetro UniqueIDArgs, pasa el valor visGetOrMakeGUID, indicando a Visio que cree un identificador único para cualquier forma que aún no tenga una. Se imprimen los identificadores únicos y los identificadores de formas en la ventana Immediate (Inmediato).

Ante de ejecutar la macro, abra un dibujo de Visio y coloque varias formas en la página de dibujo activa.

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

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.