Метод Selection.AutomaticLink (Visio)

Автоматически связывает выбранные фигуры со строками данных в указанном наборе записей без необходимости указывать точное соответствие всех фигур и строк данных. Возвращает количество связанных фигур.

Примечание.

Этот объект или элемент Visio доступен только лицензированным пользователям Visio профессиональный 2013.

Синтаксис

выражение. AutomaticLink( _DataRecordsetID_ , _ColumnNames()_ , _AutoLinkFieldTypes()_ , _FieldNames()_ , _AutoLinkBehavior_ , _ShapeIDs()_ )

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

Параметры

Имя Обязательный или необязательный Тип данных Описание
DataRecordsetID Обязательный Long Значение свойства ID объекта DataRecordset , содержащего строки данных для связывания.
ColumnNames() Обязательный String Массив строк, соответствующих именам столбцов в наборе записей данных.
AutoLinkFieldTypes() Обязательный Long Массив значений Long из перечисления VisAutoLinkFieldTypes , состоящий из типов атрибутов shape. По крайней мере одна позиция в массиве должна иметь значение, соответствующее значениям в той же позиции в массивах ColumnNames и FieldNames.
FieldNames() Обязательный String Массив строк, представляющих значения фигуры.
AutoLinkBehavior Обязательный Long Сочетание одной или нескольких констант из перечисления VisAutoLinkBehavior , определяющих способ связывания. Возможные значения см. в примечаниях.
Идентификаторы фигуры() Обязательный Long Параметр Out. Массив идентификаторов фигур (типа Long), связанных методом.

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

Long

Примечания

Для параметра ColumnNames() передайте строковый массив, состоящий из имен столбцов в базе данных. Хотя бы одна позиция в массиве должна иметь значение, соответствующее значениям в той же позиции в массивах AutoLinkFieldTypes() и FieldNames().

Для параметра AutoLinkFieldTypes() передайте массив значений Long из перечисления VisAutoLinkFieldTypes , состоящий из типов атрибутов shape. Среди атрибутов фигуры перечислены высота, ширина, текст и имя master, от которой получена фигура. Хотя бы одна позиция в массиве должна иметь значение, соответствующее значениям в той же позиции в массивах ColumnNames() и FieldNames().

Для параметра FieldNames() передайте массив строк, представляющих значения фигур. По крайней мере одна позиция в массиве FieldNames() должна иметь значение, соответствующее значениям в той же позиции в массивах ColumnNames() и AutoLinkFieldTypes().

Для большинства значений AutoLinkFieldTypes(), например, для visAutoLinkShapeText, не обязательно указывать значение FieldNames(); Вместо этого можно передать пустую строку. Однако при передаче значений visAutoLinkCustPropsLabel, visAutoLinkUserRowName, visAutoLinkPropRowNameU или visAutoLinkUserRowNameU в AutoLinkFieldTypes необходимо передать значение для FieldNames(), которое полностью определяет элемент данных фигуры (в некоторых предыдущих версиях Visio он называется настраиваемым значением свойства) для сравнения с именем столбца данных.

В качестве необязательного параметра AutoLinkBehavior можно передать комбинацию одного или нескольких значений из перечисления VisAutoLinkBehaviors , которые определяют, как будет происходить связывание. В следующей таблице перечислены возможные значения.

Константа Значение Описание
visAutoLinkDontReplaceExistingLinks 16 Не заменяйте существующие ссылки.
visAutoLinkGenericProgressBar 2 Показывать общий индикатор выполнения вместо более подробного.
visAutoLinkIncludeHiddenProps 64 Включение скрытых свойств.
visAutoLinkNoApplyDataGraphic 4 Не применяйте рисунок данных по умолчанию к связанным фигурам.
visAutoLinkNullMatchesNoFormula 32 Разрешите сопоставлению значений базы данных со значениями NULL параметру "Нет формулы" в электронной таблице Visio ShapeSheet.
visAutoLinkReplaceExistingLinks 8 Замените существующие связи.
visAutoLinkSelectedShapesOnly 1 Связывание только выбранных фигур, а не их вложенных фигур

Невозможно передать значение, включающее одновременно visAutoLinkDontReplaceExistingLinks и visAutoLinkReplaceExistingLinks. При попытке этого метода возвращается ошибка.

Если передать значение для параметра AutoLinkBehavior, оно изменит поведение по умолчанию, а именно:

  • Используйте параметр LinkReplaceBehavior набора записей, чтобы определить, следует ли разорвать существующие связи. Если значением является visLinkReplacePrompt, оно обрабатывается так же, как и visLinkReplaceAlways.

  • Связывание выделенных фигур и их подфигур.

  • Не заменяйте подробный индикатор выполнения универсальным индикатором выполнения.

  • Применение рисунков, связанных с данными.

Для параметра ShapeIDs() передайте пустой безразмерный массив типа Long. Visio вернет массив, заполненный идентификаторами фигур, связанных с данными методом.

Чтобы предоставить Visio достаточно сведений для создания связей, необходимо указать по крайней мере один набор совпадающих данных: имя столбца в наборе записей данных, тип атрибута фигуры и, при необходимости, значение фигуры — все в той же позиции индекса соответствующих массивов, которые вы передаете методу. Тип атрибута фигуры указывает атрибут фигуры в качестве основы сопоставления. Атрибут может быть значением элемента данных фигуры, текста фигуры или другого значения, указанного в перечислении VisAutoLinkFieldTypes .

Например, предположим, что документ содержит ряд фигур, представляющих разных сотрудников, и что текст фигуры, в данном случае отображающий имена соответствующих сотрудников, идентифицирует фигуры. Как показано в примере в этом разделе, методу следует передать следующие параметры:

  • Для параметра ColumnNames() массив, содержащий имя столбца "EmployeeName" в позиции массива 0.

  • Для параметра AutoLinkFieldTypes() значение перечисления visAutoLinkShapeText в позиции массива 0.

  • Для параметра FieldNames() пустая строка (''") в позиции массива 0, потому что, если AutoLinkFieldTypes() имеет значение visAutoLinkShapeText, нет необходимости указывать значение FieldNames().

Пример

В следующем макросе Microsoft Visual Basic для приложений (VBA) показано, как использовать метод AutomaticLink для автоматической привязки фигур в документе к данным в наборе записей данных. Она связывает данные о сотрудниках, содержащиеся в наборе записей данных, с фигурами в документе, текст фигуры которых соответствует именам сотрудников.

Перед запуском этого макроса создайте набор записей данных, содержащий столбец с именем "EmployeeName", в котором перечислены имена сотрудников, а также любые другие столбцы, которые вы хотите включить, а затем назначьте имена этих сотрудников в качестве текста фигуры соответствующим фигурам в документе Visio. Используйте метод DataRecordsets.Add , чтобы добавить набор записей в коллекцию DataRecordsets активного документа. Убедитесь, что это тот набор данных, который вы добавили в коллекцию последним.

Public Sub AutomaticLink_Example() 
 
    Dim vsoDataRecordset As Visio.DataRecordset 
    Dim vsoSelection As Visio.Selection 
    Dim astrColumnNames(1) As String 
    Dim alngFieldTypes(1) As Long 
    Dim astrFieldNames(1) As String 
    Dim alngShapesLinked() As Long 
    Dim intCount As Integer 
     
    intCount = Visio.ActiveDocument.DataRecordsets.Count 
    Set vsoDataRecordset = Visio.ActiveDocument.DataRecordsets(intCount ) 
 
    astrColumnNames(0) = "EmployeeName" 
    alngFieldTypes(0) = Visio.VisAutoLinkFieldTypes.visAutoLinkShapeText 
    astrFieldNames(0) = "" 
 
    ActiveWindow.DeselectAll 
    ActiveWindow.SelectAll 
 
    Set vsoSelection = ActiveWindow.Selection 
    vsoSelection.AutomaticLink vsoDataRecordset.ID, _ 
                    astrColumnNames, _ 
                    alngFieldTypes, _ 
                    astrFieldNames, 0, alngShapesLinked 
 
End Sub

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

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