Enhancing the Orgchart with different reporting lines

Over the summer I was asked if it was possible to have some of the reporting lines a different pattern. An interesting idea, but how do you mantain the feature when the Orgchart is imported and exported?

For this feature to work the information had to be stored with the person at the bottom of the reporting relationship. The Custom Properties (Soon to be Shape Data) of each person was preserved over imports and exports and was the ideal location. So once the data was imported into Visio VBA code was run to check each 2d shape for a "Reporting Type" Custom Property and change the line pattern of their reporting line to match.

Sub ChangeReportingLines()

' Display connections on the page

Dim conObj         As Visio.Connect
Dim i              As Integer
Dim ReportingType  As String
Dim vsoPage        As Visio.Page
Dim VsoShp         As Visio.Shape

For Each vsoPage In ActiveDocument.Pages
    For Each VsoShp In vsoPage.Shapes
        If Not VsoShp.OneD Then
            nrows = VsoShp.RowCount(Visio.visSectionProp)
            For i = 0 To nrows – 1
                If VsoShp.CellsSRC(Visio.visSectionProp, i, visCustPropsLabel).ResultStr(Visio.visNone) = "ReportingType" Then
                    ReportingType = VsoShp.CellsSRC(Visio.visSectionProp, i, visCustPropsValue).ResultStr(Visio.visNone)
                    For Each conObj In VsoShp.FromConnects
                        If conObj.FromPart = visEnd Then
                        Debug.Print "change to –> "; ReportingType
                        Select Case ReportingType
                        Case "Dotted"
                            conObj.FromSheet.CellsSRC(visSectionObject, visRowLine, visLinePattern).FormulaU = "3"
                        Case "Dashed"
                            conObj.FromSheet.CellsSRC(visSectionObject, visRowLine, visLinePattern).FormulaU = "2"
                        Case Else
                            Debug.Print ReportingType
                        End Select
                    End If
                    Next conObj
                End If
            Next i
        End If
    Next VsoShp

Next vsoPage

End Sub

This can be taken further by trapping any changes to the line pattern through the UI and updating the Custom Property to match.

John… Visio MVP

Leave a Reply

Your email address will not be published. Required fields are marked *