VSTO – Word: RibbonTab während der Laufzeit ein- / ausblenden

Beschreibung

Hat man sein eigenes Ribbon programmiert und ist dieses dann irgendwann umfangreicher geworden, reicht die Unterteilung eines RibbonTabs in Gruppen evtl. nicht mehr aus. Schnell nutzt man die Möglichkeit, je nach Einsatzgebiet mehrere RibbonTabs zu generieren. Wenn diese nicht immer benötigt werden, ist es hilfreich, wenn der Nutzer diese „unnötigen“ RibbonTabs während der Laufzeit ausblenden kann.

In meinem Fall gibt es einen RibbonTab, der immer angezeigt werden soll (MyRibbonTabMain). In diesem gibt es die Einstellungsmöglichkeit, die anderen RibbonTabs (MyRibbonTab1MyRibbonTab2) anzuzeigen oder ggfs. auszublenden. Diese anderen RibbonTabs beinhalten spezielle Funktionen, die nur selten oder nur von bestimmten Nutzern verwendet werden. Durch die Einstellungsmöglichkeit kann der jeweilige Nutzer also die für ihn uninteressanten RibbonTabs ausblenden. Solche Einstellungen können dann z.B. in einer XML-Datei, die alle Einstellungen des Ribbons enthält, gespeichert werden (nicht Teil dieser Funktion), damit sie bei jedem Start von Word wiederhergestellt werden.

Das folgende Beispiel zeigt, wie eine Funktion, welche Ribbontabs des eigenen Ribbons während der Laufzeit ein- und ausblendet, in Visual Studio realisiert werden kann.

Hinweis: Das Ribbon heißt MyRibbon. Das Formular, in dem das Ribbon mit allen RibbonTabs enthalten ist, heißt frmMyRibbon. Das Ribbon besteht in diesem Beispiel aus den oben erwähnten drei RibbonTabs: MyRibbonTabMain, MyRibbonTab1, MyRibbonTab2. Da MyRibbonTabMain immer angezeigt werden soll, wird dieser RibbonTab in der Funktion nicht behandelt.

Sourcecode

' showRibbonTab
' Anzeigen / Ausblenden des RibbonTabs mit dem übergebenen Namen
'
' Parameter:
' sRibbonTabName As String        - Name des betroffenen RibbonTabs
' bRibbonTabVisibility As Boolean - anzeigen (true) oder ausblenden (false)
'
Public Sub showRibbonTab(sRibbonTabName As String, bRibbonTabVisibility As Boolean)
    ' Variable, um das eigene Ribbon-Formular anzusprechen
    Dim frmMyRibbon As MyRibbon.frmMyRibbon = Globals.Ribbons.GetRibbon(GetType(MyRibbon.frmMyRibbon))

    ' Je nach übergebenen RibbonTab sieht der Befehl anders aus ...
    Select Case sRibbonTabName
        Case "MyRibbonTab1"
            frmMyRibbon.MyRibbonTab1.Visible = bRibbonTabVisibility
        Case "MyRibbonTab2"
            frmMyRibbon.MyRibbonTab2.Visible = bRibbonTabVisibility
    End Select
End Sub