Метод 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 и обратная связь.