Print information about all available ribbons. API Sample

Description

This sample prints out all of the elements of the ribbons. This output is very useful when customizing the ribbon to be able to get the names of the various existing ribbons, tabs, and panels.

Code Samples

Public Sub PrintRibbon()
    Open "C:\temp\RibbonNames.txt" For Output As #1

    Print #1, "File Controls (Application Menu)"
    Call PrintControls(ThisApplication.UserInterfaceManager.FileBrowserControls, "", 1)
    Print #1, "------------------------------------------------------------------"

    Print #1, "Help Controls"
    Call PrintControls(ThisApplication.UserInterfaceManager.HelpControls, "", 1)
    Print #1, "------------------------------------------------------------------"

    Dim oRibbon As Ribbon
    For Each oRibbon In ThisApplication.UserInterfaceManager.Ribbons
        Print #1, "Ribbon: " & oRibbon.InternalName

        Print #1, "    QAT controls"
        Call PrintControls(oRibbon.QuickAccessControls, "            ", 0)

        Dim oTab As RibbonTab
        For Each oTab In oRibbon.RibbonTabs
            Print #1, "    Tab: " & oTab.DisplayName & ", " & oTab.InternalName & ", Visible: " & oTab.Visible

            Dim oPanel As RibbonPanel
            For Each oPanel In oTab.RibbonPanels
                Print #1, "        Panel: " & oPanel.DisplayName & ", " & oPanel.InternalName & ", Visible: " & oPanel.Visible

                Call PrintControls(oPanel.CommandControls, "            ", 0)

                If oPanel.SlideoutControls.Count > 0 Then
                    Print #1, "            --- Slideout Controls ---"
                    Call PrintControls(oPanel.SlideoutControls, "            ", 0)
                End If
            Next
        Next

    Print #1, "------------------------------------------------------------------"
    Next
    On Error GoTo 0

    Close #1

    MsgBox "Result written to: C:\temp\RibbonNames.txt"
End Sub

Private Sub PrintControls(Controls As CommandControls, LeadingSpace As String, Level As Integer)
    Dim oControl As CommandControl
    For Each oControl In Controls
        If oControl.ControlType = kSeparatorControl Then
            Print #1, LeadingSpace & Space(Level * 4) & "Control: Seperator"
        Else
            Print #1, LeadingSpace & Space(Level * 4) & "Control: " & oControl.DisplayName & ", " & oControl.InternalName & ", Visible: " & oControl.Visible

            If Not oControl.ChildControls Is Nothing Then
                Call PrintControls(oControl.ChildControls, LeadingSpace, Level + 1)
            End If
        End If
    Next
End Sub