Table of contents
Collapse the table of content
Expand the table of content

Page.GetShapesLinkedToData Method (Visio)

office 365 dev account|Last Updated: 6/12/2017
1 Contributor

Returns an array of all shapes on the active page linked to data in the specified data recordset.

Note This Visio object or member is available only to licensed users of Visio Professional 2013.


expression . GetShapesLinkedToData( DataRecordsetID , ShapeIDs() )

expression An expression that returns a Page object.


NameRequired/OptionalData TypeDescription
DataRecordsetIDRequiredLongThe ID of a data recordset contained in the current document.
ShapeIDs()RequiredLongOut parameter. An array of type Long that the method will return filled with the shape IDs of shapes on the page linked to the data recordset specified in DataRecordsetID.

Return Value



For the ShapeIDs() parameter, pass an empty, dimensionless array of type Long . If there are no linked shapes on the page, GetShapesLinkedToData will return an empty array.

To determine the specific data row in the data recordset shapes are linked to, use the Page.GetShapesLinkedToDataRow method.


The following Microsoft Visual Basic for Applications (VBA) macro shows how to use the GetShapesLinkedToData method to determine the shape IDs of the shapes on the page linked to data in the data recordset most recently added to the DataRecordsets collection of the current document. It prints the shape IDs in the Immediate window.

Before running this macro, use the DataRecordsets.Add method or another means to add at least one data recordset to the DataRecordsets collection, and make sure there is at least one shape on the active page linked to data in the data recordset.

Public Sub GetShapesLinkedToData_Example() 

    Dim vsoDataRecordset As Visio.DataRecordset 
    Dim intRecordsetCount As Integer 
    Dim alngShapeIDs() As Long 
    Dim intArrayCounter As Integer 

    intRecordsetCount = Visio.ActiveDocument.DataRecordsets.Count 
    Set vsoDataRecordset = Visio.ActiveDocument.DataRecordsets(intRecordsetCount) 

    ActivePage.GetShapesLinkedToData vsoDataRecordset.ID, alngShapeIDs 

    For intArrayCounter = LBound(alngShapeIDs) To UBound(alngShapeIDs) 
        Debug.Print alngShapeIDs(intArrayCounter) 

End Sub
© 2018 Microsoft