Поделиться через


Метод Page.ShapeIDsToUniqueIDs (Visio)

Возвращает массив уникальных идентификаторов фигур на странице, как указано в их идентификаторах фигур.

Синтаксис

выражение. ShapeIDsToUniqueIDs( _ShapeIDs()_ , _UniqueIDArgs_ , _GUIDs()_ )

Выражение Выражение, возвращающее объект Page .

Параметры

Имя Обязательный или необязательный Тип данных Описание
ShapeIDs() Обязательный Long Массив типа Длинные идентификаторы фигур, соответствующие набору фигур на активной странице документа.
UniqueIDArgs Обязательный VisUniqueIDArgs Возвращает, удаляет или создает уникальный идентификатор объекта Shape . Возможные значения см. в разделе Примечания.
GUID() Обязательный String Параметр Out. Пустой массив, заполняемый методом уникальными идентификаторами типа String , соответствующими фигурам, указанным в ShapeIDs()

Возвращаемое значение

Отсутствует

Примечания

Microsoft Visio идентифицирует фигуры по двум разным идентификаторам: идентификаторам фигур и уникальным идентификаторам. Идентификаторы фигур являются числовыми и однозначно определяют фигуры в области отдельной страницы документа. Однако они не являются уникальными в более широкой области.

Уникальные идентификаторы — это глобальные уникальные идентификаторы (GUID). Они уникальны в области приложения.

Для преобразования между идентификаторами фигур и уникальными идентификаторами можно использовать два метода объекта Page : ShapeIDsToUniqueIDs и UniqueIDsToShapeIDs.

По умолчанию фигура не имеет уникального идентификатора. Фигура получает уникальный идентификатор только в том случае, если задано ее свойство Shape.UniqueID . Если объект Shape имеет уникальный идентификатор, ни одна другая фигура в другом документе не будет иметь такой же идентификатор.

Параметр UniqueIDArgs задает и управляет поведением свойства UniqueID для всех фигур в ShapeIDs(). UniqueIDArgs должно иметь одно из следующих значений, объявленных в библиотеке типов Visio в VisUniqueIDArgs.

Константа Значение Описание
visGetGUID 0 Возвращает строку уникального идентификатора, только если фигура уже имеет уникальный идентификатор. В противном случае возвращается строка нулевой длины ("").
visGetOrMakeGUID 1 Возвращает строку уникального идентификатора фигуры. Если фигура еще не имеет уникального идентификатора, она назначает его фигуре и возвращает новый идентификатор.
visDeleteGUID 2 Удаляет уникальный идентификатор фигуры и возвращает строку нулевой длины ("").
visGetOrMakeGUIDWithUndo 3 Возвращает строку уникального идентификатора фигуры. Если фигура еще не имеет уникального идентификатора, назначает его фигуре и возвращает новый идентификатор. Невозможно.
visDeleteGUIDWithUndo 4 Очищает уникальный идентификатор фигуры и возвращает строку нулевой длины (""). Невозможно.

Пример

В следующем макросе Microsoft Visual Basic для приложений (VBA) показано, как использовать метод ShapeIDsToUniqueIDs для определения уникальных идентификаторов фигур на странице, переданной методу . Он выполняет итерацию по всем фигурам на активной странице рисования, используя свойство Shape.UniqueID для получения идентификаторов фигур, а затем передает массив этих идентификаторов методу ShapeIDsToUniqueIDs в качестве параметра ShapeIDs() для получения уникальных идентификаторов фигур. Для параметра UniqueIDArgs он передает значение visGetOrMakeGUID, указывая Visio на создание уникального идентификатора для любой фигуры, у которых его еще нет. Он выводит уникальные идентификаторы и идентификаторы фигур в окне Интерпретация.

Перед выполнением этого макроса откройте документ Visio и поместите несколько фигур на активную страницу документа.

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

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.