次の方法で共有


Page.LinkShapesToDataRows メソッド (Visio)

指定されたデータ レコードセットの複数の行を、そのデータ行 ID によって指定されたとおりにページ上の複数の図形にリンクし、オプションで現在のデータ グラフィックをリンクされた図形に適用します。

注:

この Visio オブジェクトまたはメンバーは Visio Professional 2013 のライセンス ユーザーのみが使用できます。

構文

expression. LinkShapesToDataRows( _DataRecordsetID_ , _DataRowIDs()_ , _ShapeIDs()_ , _ApplyDataGraphicAfterLink_ )

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

パラメーター

名前 必須 / オプション データ型 説明
DataRecordsetID 必須 Long 現在の図面に含まれて、リンクするデータを含んでいるデータ レコードセットの ID です。
DataRowIDs() 必須 Long DataRecordsetID で指定されたデータ レコードセット 内の行 の Long 型の配列。ShapeIDs() で指定された図形にリンクされます。
ShapeIDs() 必須 Long DataRecordsetID で指定されたデータ レコードセットの DataRowIDs() で指定されたデータ行にリンクする、ページ上の図形の 整数型の図形 ID の配列。
ApplyDataGraphicAfterLink 省略可能 Boolean リンクされた図形に現在のデータ グラフィックを適用するかどうかを指定します。 詳細については「備考」を参照してください。

戻り値

なし

解説

ShapeIDs() パラメーターに渡す配列内の図形 ID のインデックス位置は、図形をリンクするデータ行の ID の DataRowIDs() 配列内のインデックス位置に対応する必要があります。 つまり、ID 1 の図形を ID 10 のデータ行にリンクするには、たとえば、図形 ID とデータ行 ID をそれぞれの配列の同じ配列インデックス位置に配置します。

図形とデータ行のリンクが確立できない場合、Visio ではその図形はリンクされず、配列の次の図形が処理されます。 メソッドを実行した後、配列内のすべての図形が実際に指定されたデータ行にリンクされているかどうかを判断するには、配列内の各 図形で Shape.GetLinkedDataRow メソッドを呼び出します。 このメソッドが失敗した場合、その図形はデータ行にリンクされていません。 Visio は通常、図形が既にデータにリンクされていて、データ レコードセットの link-replacement-behavior 設定でリンクを置き換えないことを指定しない限り、行を図形にリンクするのに成功します。

省略可能な ApplyDataGraphicAfterLink パラメーターに True を 渡す場合、またはこのパラメーターの値を渡さない場合は、メソッドを呼び出す前に、既にデータ グラフィックが適用されている図形に既存のデータ グラフィックが再適用されます。 データ グラフィックが適用されていなかった図形には、現在の図面の他の図形に最後に適用されたデータ グラフィックが適用されます。

次の Microsoft Visual Basic for Applications (VBA) マクロは、LinkShapesToDataRows メソッドを使用して、作業中の図面ページに追加された最初の 3 つの図形を、現在のドキュメントの DataRecordsets コレクションに最後に追加されたデータ レコードセット内の最初の 3 つのデータ行のデータにリンクする方法を示しています。 省略可能な最後のパラメーターには値が渡されないため、リンクされた図形にもデータ グラフィックが適用されます。

このマクロを実行する前に、新しい Visio 図面を開き、 DataRecordsets.Add メソッドまたは別の手段を使用して、 DataRecordsets コレクションに少なくとも 1 つのデータ レコードセットを追加します。 最後に追加されたデータ レコードセットには、データ行が少なくとも 3 行含まれている必要があります。 次に、図面ページに少なくとも 3 つの図形を追加してください。

Public Sub LinkShapesToDataRows_Example() 
 
    Dim vsoDataRecordset As Visio.DataRecordset 
    Dim intRecordsetCount As Integer 
    Dim alngDataRowIDs(0 To 2) As Long 
    Dim alngShapeIDs(0 To 2) As Long 
     
    alngShapeIDs(0) = 1 
    alngShapeIDs(1) = 2 
    alngShapeIDs(2) = 3 
     
    alngDataRowIDs(0) = 1 
    alngDataRowIDs(1) = 2 
    alngDataRowIDs(2) = 3 
         
    intRecordsetCount = Visio.ActiveDocument.DataRecordsets.Count 
    Set vsoDataRecordset = Visio.ActiveDocument.DataRecordsets(intRecordsetCount) 
     
    ActivePage.LinkShapesToDataRows vsoDataRecordset.ID, alngDataRowIDs, alngShapeIDs 
 
End Sub

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。