Visio) (Selection.AutomaticLink 方法
會將選取的圖形自動連結至指定資料錄集內的資料列,而不需由您指定所有圖形與資料列的確切對應項目。 會傳回連結的圖形數。
注意事項
This Visio object or member is available only to licensed users of 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 | 輸出參數。 由方法所連結之圖形 (類型為 Long) 的識別碼陣列。 |
傳回值
Long
註解
對於 ColumnNames() 參數,您可以傳送由資料庫中資料欄名稱所組成的字串陣列。 陣列中至少必須要有一個位置的值對應於 AutoLinkFieldTypes() 和 FieldNames() 陣列中相同位置上的值。
對於 AutoLinkFieldTypes() 參數,您可以從 VisAutoLinkFieldTypes 列舉傳送 Long 值的陣列,其中含有圖形屬性類型。 在列舉的圖形屬性中包含圖形所衍生自之主圖形的高度、寬度、文字與名稱。 陣列中至少必須要有一個位置的值對應於 ColumnNames() 與 FieldNames() 陣列中相同位置的值。
對於 FieldNames() 參數,您可以傳送代表圖形值的字串。 FieldNames() 陣列中至少必須要有一個位置的值對應於 ColumnNames() 與 AutoLinkFieldTypes() 陣列中相同位置上的值。
針對 AutoLinkFieldTypes () 的大部分值,例如,針對 visAutoLinkShapeText,不需要指定 FieldNames () 值;您可以改為傳遞空字串。 不過,當您傳遞 visAutoLinkCustPropsLabel時, visAutoLinkUserRowName、 visAutoLinkPropRowNameU或 AutoLinkFieldTypes 的 visAutoLinkUserRowNameU 值,您必須傳遞 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() 參數,您可以在陣列位置 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 支援與意見反應。