RibbonX-Workshop - Aufruf des Dateimenüs abfangen
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