Iterating through the Connections on a Page: an Example

The ShowPageConnections macro below iterates through the Connect objects for the first page in the active Microsoft® Visio® document. For each Connect object, ShowPageConnections retrieves the shapes that are connected (FromSheet and ToSheet) and the part of each shape that is connected (FromPart and ToPart). It then compares the values of FromPart and ToPart to each possible value, using the constants from the Visio type library, and displays the corresponding string, along with other data for the connection, in a listbox on a user form.

Sub ShowPageConnections ()     'Pages collection of document     Dim pagsObj As Visio.Pages     'Page to work on     Dim pagObj As Visio.Page     'Object From connection connects to     Dim fromObj As Visio.Shape     'Object To connection connects to     Dim toObj As Visio.Shape     'Connects collection     Dim consObj As Visio.Connects     'Connect object from collection     Dim conObj As Visio.Connect     'Type of From connection     Dim fromData As Integer     'String to hold description of From connection     Dim fromStr As String     'Type of To connection     Dim toData As Integer     'String to hold description of To connection     Dim toStr As String

    'Get the Pages collection for the document     'Note the use of ThisDocument to refer to the current document     Set pagsObj = ThisDocument.Pages     'Get a reference to the first page of the collection     Set pagObj = pagsObj(1)     'Get the Connects collection for the page     Set consObj = pagObj.Connects     'Make sure the listbox is empty     UserForm1.ListBox1.Clear     'Loop through the Connects collection     For Each conObj In consObj         'Get the From information         Set fromObj = conObj.FromSheet         fromData = conObj.FromPart         'Get the To information         Set toObj = conObj.ToSheet         toData = conObj.ToPart         'Use fromData to determine type of connection         If fromData = visConnectError Then             fromStr = "error"         ElseIf fromData = visNone Then             fromStr = "none"         'Test fromData for visRightEdge,visBottomEdge,visMiddleEdge,         'visTopEdge,visLeftEdge,visCenterEdge, visBeginX, visBeginY, visBegin, visEndX,         'visEndY,visEnd         ElseIf fromData >= visControlPoint Then             fromStr = "controlPt_" & CStr(fromData - visControlPoint + 1)         Else             fromStr = "???"         End If         'Use toData to determine the type of shape the connector is connected to         If toData = visConnectError Then             toStr = "error"         ElseIf toData = visNone Then             toStr = "none"         ElseIf toData = visGuideX Then             toStr = "guideX"         ElseIf toData = visGuideY Then             toStr = "guideY"         ElseIf toData >= visConnectionPoint Then             toStr = "connectPt_" & CStr(toData - visConnectionPoint + 1)         Else             toStr = "???"         End If         'Add the information to the listbox         UserForm1.ListBox1.AddItem "from " & fromObj.Name & " " & fromStr & " to " & _             toObj.Name & " " & toStr     Next     UserForm1.Show End Sub