次の方法で共有


Page.ShapeIDsToUniqueIDs メソッド (Visio)

図形 ID で指定された、ページ上の図形の一意の ID の配列を返します。

構文

expression. ShapeIDsToUniqueIDs( _ShapeIDs()_ , _UniqueIDArgs_ , _GUIDs()_ )

Page オブジェクトを返す式。

パラメーター

名前 必須 / オプション データ型 説明
ShapeIDs() 必須 Long アクティブな図面 ページ上の 図形のセットに対応する長整数型の図形 ID の配列。
UniqueIDArgs 必須 VisUniqueIDArgs Shape オブジェクトの一意の ID を取得、削除、または作成するか指定します。 使用可能な値については備考を参照してください。
GUID() 必須 String 出力パラメーターです。 メソッドが、ShapeIDs() で指定された図形に対応する String 型の一意の ID で埋める空の配列

戻り値

なし

解説

Microsoft Visio は、図形 ID と一意の ID の 2 つの ID によって図形を識別します。 図形 ID は、個々の図面ページ内で図形を一意に識別する数値です。 ただし、個々の図面ページの範囲外では、一意ではありません。

Unique IDs は、グローバルな一意識別子 (GUID) です。 こちらは、アプリケーションの範囲内で一意になります。

図形 ID と一意の ID の間で変換するには、 Page オブジェクトの ShapeIDsToUniqueIDsUniqueIDsToShapeID の 2 つのメソッドを使用できます。

既定では、図形には一意の ID が設定されていません。 図形は、 Shape.UniqueID プロパティを設定した場合にのみ一意の ID を取得します。 Shape オブジェクトに一意の ID を設定すると、同じ ID は他の図面の図形にも使用することはできません。

UniqueIDArgs パラメーターは、ShapeIDs() のすべての図形の UniqueID プロパティの動作を設定および制御します。 UniqueIDArgs には、VisUniqueIDArgs の Visio タイプ ライブラリで宣言された次の値のいずれかを指定する必要があります。

定数 説明
visGetGUID 0 図形に一意の ID が既に割り当てられている場合にのみ、一意の ID の文字列を返します。 それ以外の場合は、長さ 0 の文字列 ("") を返します。
visGetOrMakeGUID 1 図形が持つ一意の ID の文字列を返します。 図形に一意の ID がない場合、図形に一意の ID を割り当ててから、新しい ID を返します。
visDeleteGUID 2 図形の一意の ID を削除して、長さ 0 の文字列 ("") を返します。
visGetOrMakeGUIDWithUndo 3 図形が持つ一意の ID の文字列を返します。 図形に一意の ID がまだない場合は、その ID を図形に割り当てて、新しい ID を返します。 元に戻すことができます。
visDeleteGUIDWithUndo 4 図形の一意の ID をクリアし、長さ 0 の文字列 ("") を返します。 元に戻すことができます。

次の Microsoft Visual Basic for Applications (VBA) マクロは、ShapeIDsToUniqueIDs メソッドを使用して、メソッドに渡されるページ上の図形の一意の ID を決定する方法を示しています。 Shape.UniqueIDプロパティを使用して図形の図形 ID を取得し、次のそれらの ID の配列を ShapeIDs() パラメーターとして ShapeIDsToUniqueIDs メソッドに渡して図形の一意の ID を取得し、アクティブな図面ページのすべての図形を順次処理します。 UniqueIDArgs パラメーターの場合、 値 visGetOrMakeGUID を渡し、まだ存在しない図形の一意の ID を作成するように Visio に指示します。 そして、一意の ID と図形 ID をイミディエイト ウィンドウに表示します。

このマクロを実行する前に、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 のサポートおよびフィードバックを参照してください。