Page.ShapeIDsToUniqueIDs 方法 (Visio)
傳回頁面上圖形的唯一識別碼陣列,如其圖形識別碼所指定。
語法
expression。 ShapeIDsToUniqueIDs
( _ShapeIDs()_
, _UniqueIDArgs_
, _GUIDs()_
)
表達 會傳回 Page 物件的運算式。
參數
名稱 | 必要/選用 | 資料類型 | 描述 |
---|---|---|---|
ShapeIDs () | 必要 | Long | 類型為 Long 之圖形識別碼的陣列,對應至使用中繪圖頁面上的一組圖形。 |
UniqueIDArgs | 必要 | VisUniqueIDArgs | 會取得、刪除或建立 Shape 物件的唯一識別碼。 請參閱 「 備註 」 可能的值。 |
GUID () | 必要 | 字串 | 輸出參數。 空陣列,方法會填入String類型的唯一識別碼,對應至ShapeID () 中指定的圖形 |
傳回值
無
註解
Microsoft Visio 會透過兩個不同的識別碼來識別圖形:圖形識別碼及唯一識別碼。 Shape IDs 是數字而且會唯一識別個別繪圖頁面範圍內的圖形。 然而,它們在較寬的範圍內就不是唯一的。
唯一標識 符是 (GUID) 的全域唯一識別碼。 它們在應用程式的範圍內是唯一的。
若要在圖形識別碼和唯一識別碼之間轉換,您可以使用 Page 物件的兩種方法: ShapeIDsToUniqueIDs 和 UniqueIDsToShapeIDs。
根據預設,圖形沒有唯一識別碼。 只有當您設定圖形的 Shape.UniqueID 屬性時,圖形才會取得唯一識別碼。 如果 Shape 物件有唯一識別碼,任何其他文件中的其他圖形都不會有相同的識別碼。
UniqueIDArgs 參數會設定並控制 ShapeIDs() 中所有圖形之 UniqueID 屬性的行為。 UniqueIDArgs 參數值必須是 VisUniqueIDArgs 中的下列其中一值 (宣告於 Visio 型別程式庫中)。
常數 | 值 | 描述 |
---|---|---|
visGetGUID | 0 | 只有在圖形已有唯一識別碼時,才會傳回唯一識別碼。 否則會傳回零長度字串 ("")。 |
visGetOrMakeGUID | 1 | 會傳回圖形的唯一識別碼字串。 如果圖形沒有唯一識別碼,則會對圖形指定一個識別碼並傳回新識別碼。 |
visDeleteGUID | 2 | 會刪除圖形的唯一識別碼並傳回零長度字串 ("")。 |
visGetOrMakeGUIDWithUndo | 3 | 會傳回圖形的唯一識別碼字串。 如果圖形還沒有唯一識別碼,請將一個識別碼指派給圖形,並傳回新的識別碼。 可復原。 |
visDeleteGUIDWithUndo | 4 | 清除圖形的唯一識別碼,並傳回長度為零的字串 (「」) 。 可復原。 |
範例
下列 Microsoft Visual Basic for Applications (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 支援與意見反應。