Page.ShapeIDsToUniqueIDs 方法 (Visio)

傳回頁面上圖形的唯一識別碼陣列,如其圖形識別碼所指定。

語法

expressionShapeIDsToUniqueIDs( _ShapeIDs()_ , _UniqueIDArgs_ , _GUIDs()_ )

表達 會傳回 Page 物件的運算式。

參數

名稱 必要/選用 資料類型 描述
ShapeIDs () 必要 Long 類型為 Long 之圖形識別碼的陣列,對應至使用中繪圖頁面上的一組圖形。
UniqueIDArgs 必要 VisUniqueIDArgs 會取得、刪除或建立 Shape 物件的唯一識別碼。 請參閱 「 備註 」 可能的值。
GUID () 必要 字串 輸出參數。 空陣列,方法會填入String類型的唯一識別碼,對應至ShapeID () 中指定的圖形

傳回值

註解

Microsoft Visio 會透過兩個不同的識別碼來識別圖形:圖形識別碼及唯一識別碼。 Shape IDs 是數字而且會唯一識別個別繪圖頁面範圍內的圖形。 然而,它們在較寬的範圍內就不是唯一的。

唯一標識 符是 (GUID) 的全域唯一識別碼。 它們在應用程式的範圍內是唯一的。

若要在圖形識別碼和唯一識別碼之間轉換,您可以使用 Page 物件的兩種方法: ShapeIDsToUniqueIDsUniqueIDsToShapeIDs

根據預設,圖形沒有唯一識別碼。 只有當您設定圖形的 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 支援與意見反應