Share via


Método Page.ShapeIDsToUniqueIDs (Visio)

Retorna uma matriz de IDs exclusivas de formas na página, conforme especificado por suas IDs de forma.

Sintaxe

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

Expressão Uma expressão que retorna um objeto Page .

Parâmetros

Nome Obrigatório/Opcional Tipo de dados Descrição
ShapeIDs() Obrigatório Long Uma matriz do tipo IDs long de forma correspondentes a um conjunto de formas na página de desenho ativa.
UniqueIDArgs Obrigatório VisUniqueIDArgs Obtém, exclui ou cria a identificação exclusiva de um objeto Shape. Consulte comentários para os valores possíveis.
GUIDs() Obrigatório String Parâmetro externo. Uma matriz vazia que o método preenche com IDs exclusivas do tipo String correspondentes às formas especificadas em ShapeIDs()

Valor de retorno

Nada

Comentários

O Microsoft Visio identifica formas por meio de duas IDs diferentes: IDs de forma e IDs exclusivas. As IDs de Forma são numéricas e identificam as formas de maneira exclusiva no escopo de uma página de desenho individual. Entretanto, elas não são exclusivas em um escopo mais amplo.

As IDs exclusivas são GUIDs (identificadores globalmente exclusivos). Eles são exclusivos no escopo do aplicativo.

Para converter entre IDs de forma e IDs exclusivas, você pode usar dois métodos do objeto Page , ShapeIDsToUniqueIDs e UniqueIDsToShapeIDs.

Por padrão, uma forma não possui identificação exclusiva. Uma forma adquire uma ID exclusiva somente se você definir sua propriedade Shape.UniqueID . Se um objeto Shape tiver uma identificação exclusiva, nenhuma outra forma em qualquer outro documento terá a mesma identificação.

O parâmetro UniqueIDArgs define e controla o comportamento da propriedade UniqueID para todas as formas em ShapeIDs(). UniqueIDArgs deve ter um dos seguintes valores declarados na biblioteca de tipos do Visio em VisUniqueIDArgs.

Constant Valor Descrição
visGetGUID 0 Somente retornará a cadeia de caracteres de identificação exclusiva se a forma já tiver uma identificação exclusiva. Caso contrário, retornará uma cadeia de caracteres de comprimento zero ("").
visGetOrMakeGUID 1 Retorna a cadeia de caracteres de identificação exclusiva da forma. Se a forma ainda não tiver uma identificação exclusiva, ela a atribuirá a ela e retornará a nova identificação.
visDeleteGUID 2 Exclui a identificação exclusiva de uma forma e retorna uma cadeia de caracteres de comprimento zero ("").
visGetOrMakeGUIDWithUndo 3 Retorna a cadeia de caracteres de identificação exclusiva da forma. Se a forma ainda não tiver uma ID exclusiva, atribua uma à forma e retorna a nova ID. Definitivo.
visDeleteGUIDWithUndo 4 Limpa a ID exclusiva de uma forma e retorna uma cadeia de caracteres de comprimento zero (""). Definitivo.

Exemplo

A macro do Microsoft Visual Basic for Applications (VBA) a seguir mostra como usar o método ShapeIDsToUniqueIDs para determinar as IDs exclusivas das formas na página passadas para o método. Ela itera em todas as formas na página de desenho ativa, usando a propriedade Shape.UniqueID para obter as identificações das formas e, em seguida, passa uma matriz dessas identificações para o método ShapeIDsToUniqueIDs como o parâmetro ShapeIDs() a fim de obter as identificações exclusivas das formas. Para o parâmetro UniqueIDArgs, ele passa o visGetOrMakeGUID de valor, dizendo ao Visio para criar uma ID exclusiva para qualquer forma que ainda não tenha uma. Ela imprime as identificações exclusivas e as identificações de forma na janela Immediate.

Antes de executar essa macro, abra um desenho do Visio e inclua várias formas na página de desenho ativa.

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

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.