Selection.AutomaticLink 方法 (Visio)
可以自动将所选形状链接到指定数据记录集内的数据行,而无需指定所有形状和数据行的确切匹配项。 返回所链接形状的数目。
注意
此 Visio 对象或成员仅供 Visio Professional 2013 的授权用户使用。
语法
expression。 AutomaticLink
( _DataRecordsetID_
, _ColumnNames()_
, _AutoLinkFieldTypes()_
, _FieldNames()_
, _AutoLinkBehavior_
, _ShapeIDs()_
)
表达 返回 Selection 对象的表达式。
参数
名称 | 必需/可选 | 数据类型 | 说明 |
---|---|---|---|
DataRecordsetID | 必需 | Long | DataRecordset 对象的 ID 属性值,该对象包含要链接到的数据行。 |
ColumnNames () | 必需 | 字符串 | 一个由字符串组成的数组,这些字符串与数据记录集内各列的名称相对应。 |
AutoLinkFieldTypes () | 必需 | Long | 一个由 VisAutoLinkFieldTypes 枚举中的值(Long 类型)组成的数组,该枚举由形状属性类型组成。 在该数组中,必须至少有一个位置所包含的值与 ColumnNames 和 FieldNames 数组中同一位置处的值一致。 |
FieldNames () | 必需 | 字符串 | 一个由代表形状值的字符串组成的数组。 |
AutoLinkBehavior | 必需 | Long | VisAutoLinkBehavior 枚举中的一个或多个常量的组合,这些常量指定如何进行链接。 有关可能值,请参见备注。 |
ShapeIDs () | 必需 | Long | out 参数。 形状 ID(Long 类型)组成的数组,这些形状由该方法链接。 |
返回值
Long
备注
对于 ColumnNames() 参数,传递的是一个字符串数组,该数组由数据库中各列的名称组成。 在该数组中,必须至少有一个位置所包含的值与 AutoLinkFieldTypes() 和 FieldNames() 数组中同一位置处的值一致。
对于 AutoLinkFieldTypes() 参数,传递的是由 VisAutoLinkFieldTypes 枚举中的值(Long 类型)组成的数组,该枚举由形状属性类型组成。 枚举的形状属性包括从其派生形状的主控形状的高度、宽度、文本和名称。 在该数组中,必须至少有一个位置所包含的值与 ColumnNames() 和 FieldNames() 数组中同一位置处的值一致。
对于 FieldNames() 参数,传递的是一个代表形状值的字符串组成的数组。 在 FieldNames() 数组中,必须至少有一个位置所包含的值与 ColumnNames() 和 AutoLinkFieldTypes() 数组中同一位置处的值一致。
对于 AutoLinkFieldTypes () 的大多数值,例如,对于 visAutoLinkShapeText,无需指定 FieldNames () 值;可以改为传递空字符串。 但是,在传递 AutoLinkFieldTypes 的 visAutoLinkCustPropsLabel、 visAutoLinkUserRowName、 visAutoLinkPropRowNameU 或 visAutoLinkUserRowNameU 值时,必须传递 FieldNames () 的值,该值完全指定形状数据项 (某些早期版本的 Visio) 中称为自定义属性值,以便与数据列名称进行比较。
对于可选的 AutoLinkBehavior 参数,您可以传递来自 VisAutoLinkBehaviors 枚举的一个或多个值的组合,这些值指定如何进行链接。 下表列出了可能的值。
常量 | 值 | Description |
---|---|---|
visAutoLinkDontReplaceExistingLinks | 16 | 不替换现有的链接。 |
visAutoLinkGenericProgressBar | 2 | 显示一般进度栏,而不是更详细的进度栏。 |
visAutoLinkIncludeHiddenProps | 64 | 包含隐藏属性。 |
visAutoLinkNoApplyDataGraphic | 4 | 不将默认数据图形应用于链接的形状。 |
visAutoLinkNullMatchesNoFormula | 32 | 允许空数据库值映射到 Visio ShapeSheet 电子表格中的“无公式”。 |
visAutoLinkReplaceExistingLinks | 8 | 替换现有的链接。 |
visAutoLinkSelectedShapesOnly | 1 | 只链接所选的形状,而不链接所选形状的子形状。 |
不能传递同时包含 visAutoLinkDontReplaceExistingLinks 和 visAutoLinkReplaceExistingLinks 的值。 如果尝试这样做,该方法将返回错误。
如果传递 AutoLinkBehavior 的值,该方法会按如下所示修改默认行为:
使用数据记录集的 LinkReplaceBehavior 设置确定是否要断开现有链接。 如果该设置为 visLinkReplacePrompt,则将其视为 visLinkReplaceAlways。
链接所选的形状及其子形状。
不将详细进度栏替换为普通进度栏。
应用数据图形。
对于 ShapeIDs () 参数,请传递 Long 类型的空无维度数组。 Visio 将返回由形状 ID 组成的数组,这些形状通过该方法链接到数据。
若要为 Visio 提供足够的信息来创建链接,必须至少提供一组匹配的数据:数据记录集中的列名称、形状属性类型以及形状值(如有必要),所有这些数据都位于传递给 方法的相应数组的同一索引位置。 形状属性类型指示匹配所基于的形状的属性。 该属性可以是形状数据项的值、形状文本的值或 VisAutoLinkFieldTypes 枚举中指定的其他值。
例如,假设绘图包含一些选定形状(这些形状代表不同的雇员),并且使用形状文本(在本例中显示相应雇员的姓名)标识这些形状。 如本主题中的示例所示,将下列参数传递给该方法:
对于 ColumnNames() 参数,传递的是一个在数组位置 0 处包含“EmployeeName”列名的数组。
对于 AutoLinkFieldTypes() 参数,传递的是一个在数组位置 0 处包含枚举值 visAutoLinkShapeText 的数组。
对于 FieldNames() 参数,传递的是一个在数组位置 0 处包含空字符串 ("") 的数组,因为当 AutoLinkFieldTypes() 为 visAutoLinkShapeText 时,不必指定 FieldNames() 值。
示例
以下 Microsoft Visual Basic for Applications (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 支持和反馈,获取有关如何接收支持和提供反馈的指南。