RibbonX-Workshop - Aufruf des Dateimenüs abfangen

Geeignet ab Office 2010. In diesem Teil werden wir lernen das Aufrufen und Schließen des Dateimenüs abzufangen. Da diese Funktion nur extrem selten eingesetzt wird soll sie hier nur am Rande erwähnt werden. Weiterführende (umfangreichere) Informationen zu diesem Thema gibt es im Internet (meist englischsprachig).

Das Aufrufen des Dateimenüs kann mit onShow überwacht werden, das Schließen mit onHide.
Aber zuerst die Nachteile:

Wichtig: Wir können nur überwachen und jeweils einen Code ausführen. Es ist jedoch nicht möglich das Aufrufen des Dateimenüs zu verhindern.
Diese Abfangroutinen sind globale Ereignisse die sich auf alle geöffneten Dateien auswirken. Dadurch kommt es zu Makrofehlermeldungen. In Excel können wir dieses Problem beheben indem wir im XML-Code zusätzlich auf die Datei verweisen in welcher das Makro eingebaut ist, es kann auch in der personal.xlsb eine Dummyprozedur mit gleichen Namen abgelegt werden. In Word können wir nur eine Dummyprozedur in der normal.dotm oder in einer Vorlage (muss im STARTUP-Ordner abgelegt werden) nutzen, da ein Verweis auf eine Datei im XML-Code bei Word nicht möglich ist.


Kommen wir nun zu zwei kleinen Beispielen. Bei diesen soll das Aufrufen und Schließen per Meldungsfenster (Messagebox) signalisiert werden.

Beispiel für Excel:
XML-Code:
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
   <ribbon>
       <!-- Ribbon XML -->
   </ribbon>
  <backstage onHide="backstage_onshow_test.xlsb!OnHide" onShow="backstage_onshow_test.xlsb!OnShow">
      <!-- Backstage Ribbon XML -->
  </backstage >
</customUI>

VBA-Code:
Option Private Module
Option Explicit

Public objRibbon As IRibbonUI

Public Sub onloadShow(Ribbon As IRibbonUI)
  Set objRibbon = Ribbon
End Sub

Sub OnShow(control)
  If ActiveWorkbook.Name <> ThisWorkbook.Name Then Exit Sub
     MsgBox "Dateimenü aufgerufen.", 64, "Hinweis"
End Sub

Sub OnHide(control)
    If ActiveWorkbook.Name <> ThisWorkbook.Name Then Exit Sub
       MsgBox "Dateimenü geschlossen.", 64, "Hinweis"
End Sub


Beispiel für Word:
XML-Code:
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
   <ribbon>
       <!-- Ribbon XML -->
   </ribbon>
  <backstage onHide="OnHide" onShow="OnShow">
      <!-- Backstage Ribbon XML -->
  </backstage >
</customUI>

VBA-Code:
Option Private Module
Option Explicit

Public objRibbon As IRibbonUI

Public Sub onloadShow(Ribbon As IRibbonUI)
  Set objRibbon = Ribbon
End Sub

Sub OnShow(control)
    MsgBox "Dateimenü aufgerufen.", 64, "Hinweis"
End Sub

Sub OnHide(control)
    MsgBox "Dateimenü geschlossen.", 64, "Hinweis"
End Sub


Bei der Dummyprozedur nutzen Sie einfach einen leeren Code.
Sub OnShow(control)
End Sub

Sub OnHide(control)
End Sub