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 のサポートおよびフィードバックを参照してください。