Backstage leeren

  PDF ansehen

  Download PDF und Beispieldatenbank

Auch wenn der neue Backstage-Bereich unter Access 2010 für viele Anwendungen interessant sein mag: In manchen Fällen möchten Sie ihn vielleicht einfach ausblenden. Das geht leider nicht, aber Sie können zumindest alle darin enthaltenen Elemente entfernen. Einige davon wehren sich zwar vehement, aber mit einem Trick entfernen Sie auch diese.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank BackstageLeeren.accdb.

Eingebaute Backstage-Elemente ausblenden

Um die eingebauten Elemente der ersten Ebene des Backstage-Bereichs (also die links sichtbaren Elemente) auszublenden, benötigen Sie den Typ (button/tab) und die ?idMso des jeweiligen Steuerelements. Diese liefert die bereits oben erwähnte Excel-Tabelle AccessControls.xlsx. Die folgende XML-Definition des Backstage-Bereichs blendet alle Elemente außer den zuletzt geöffneten Elementen aus (siehe Bild 1):

Ausgedünnter Backstage-Bereich

Bild 1: Ausgedünnter Backstage-Bereich

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">

   <backstage>

     <button idMso="FileSave" visible="false"/>

     <button idMso="ApplicationOptionsDialog" visible="false"/>

     <button idMso="SaveObjectAs" visible="false"/>

     <button idMso="FileCloseDatabase" visible="false"/>

     <button idMso="FileExit" visible="false"/>

     <button idMso="FileOpen" visible="false"/>

     <button idMso="FileSaveAsCurrentFileFormat" visible="false"/>

     <tab idMso="TabHelp" visible="false"/>

     <tab idMso="TabInfo" visible="false"/>

     <tab idMso="TabRecent" visible="false"/>

     <tab idMso="TabNew" visible="false"/>

     <tab idMso="TabPrint" visible="false"/>

     <tab idMso="TabShare" visible="false"/>

   </backstage>

</customUI>

Wie legen Sie diese Elemente mit dem Ribbon-Admin 2010 an? Dies geht folgendermaßen:

  • Starten Sie den Ribbon-Admin 2010, während die Zieldatenbank geöffnet ist.
  • Erstellen Sie, falls noch nicht geschehen, eine neue Anwendung im Ribbon-Admin 2010.
  • Legen Sie eine neue Ribbon-Definition an.
  • Legen Sie die Elemente customUI und backstage an.
  • Fügen Sie ein button-Element hinzu.
  • Stellen Sie das Attribut id auf eine leere Zeichenkette ein.
  • Klicken mit der rechten Maustaste in das Attribut idMso und wählen Sie aus dem Kontextmenü den Eintrag Eingebaute idMso hinzufügen aus.
  • Navigieren Sie sich wie in Bild 2 zum gesuchten Element und wählen Sie es aus - in diesem Beispiel FileSave - und klicken Sie dann auf das grüne Pluszeichen.
  • idMso für ein command-Element auswählen

    Bild 2: idMso für ein command-Element auswählen

  • Stellen Sie das Attribut visible auf den Wert false ein und leeren Sie das Attribut label.
  • Alternativ tragen Sie einfach die Werte aus dem Listing für die benötigten button-Elemente ein, also SaveFile, ApplicationOptionsDialog und so weiter - erledigen Sie dies für die übrigen Elemente und stellen Sie auch deren Attribut visible auf false ein.
  • Nach den buttons fügen Sie einige tab-Elemente zum backstage-Element hinzu. Auch diese werden mit dem Wert false für die Eigenschaft visible versehen.

Wenn Sie alle 13 Elemente erstellt haben, sieht das im Ribbon-Admin 2010 wie in Bild 3 aus. Wählen Sie dann den Kontextmenüeintrag Ribbon in Zielanwendung schreiben des Ribbon-Definition-Elements aus. Gegebenenfalls wird nun die Tabelle USysRibbons erstellt, welche die Ribbon-Definition speichert.

Die Ribbon-Definition zum Leeren des Backstage-Bereichs

Bild 3: Die Ribbon-Definition zum Leeren des Backstage-Bereichs

Wählen Sie aus dem gleichen Kontextmenü anschließend noch den Eintrag Ribbon als Anwendungsribbon festlegen aus.

Danach schließen und öffnen Sie die Datenbank.

Zuletzt verwendete Dateien ausblenden

Fehlen nur noch die zuletzt verwendeten Dateien im Backstage-Bereich. Deren Anzahl stellen Sie über die Eigenschaft aus Bild 4 ein. Leider gibt es keine Access-Option, die Sie direkt per VBA einstellen könnten. Die Einstellung befindet sich nämlich in der Registry, und hier ist ein wenig mehr Aufwand nötig. Zunächst benötigen Sie die folgenden drei API-Funktionen:

Einstellen der zuletzt verwendeten Dateien im Schnellzugriff

Bild 4: Einstellen der zuletzt verwendeten Dateien im Schnellzugriff

Declare Function ?RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" ( _

     ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, _

     ByVal samDesired As Long, phkResult As Long) As Long

Declare Function ?RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" ( _

     ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, _

     ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long

Declare Function ?RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long

Außerdem sind diese Konstanten erforderlich:

Private Const HKEY_CURRENT_USER = &H80000001

Private Const KEY_SET_VALUE = &H2

Private Const ERROR_SUCCESS = &H0

Private Const REG_DWORD = 4

Die eigentliche Arbeit erledigt schließlich die folgende VBA-Funktion, der Sie entweder den Wert True (Dateien einblenden) oder False (Dateien ausblenden) übergeben. Beachten Sie, dass Sie die Einstellung nach Verwendung einer von Ihnen programmierten Anwendung wieder rückgängig machen sollten, damit der Benutzer seine gewohnte Benutzeroberfläche vorfindet:

Public Function QuickAccessDisplay(bol As Boolean)

     Dim kHnd As LongPtr

     Dim lngValue As Long

     Dim lngRtn As Long

     lngValue = Abs(bol)

     Const strSubKey = "SoftwareMicrosoftOffice14.0AccessFile MRU"

     Const strName = "Quick Access Display"

     lngRtn = RegOpenKeyEx(HKEY_CURRENT_USER, strSubKey, 0, KEY_SET_VALUE, kHnd)

     If lngRtn = ERROR_SUCCESS Then

         RegSetValueEx kHnd, strName, 0, REG_DWORD, lngValue, Len(lngValue)

     End If

     RegCloseKey kHnd

End Function

Wohin aber nun mit dem Aufruf dieser Funktion? Wer sich geistig gerade so richtig in den Backstage-Bereich hineingedacht hat, tendiert vielleicht dazu, dass diese Funktion etwa beim Laden der customUI-Definition oder beim Anzeigen des Backstage-Bereichs aufgerufen werden muss. Letzteres ist bereits zu spät, denn damit die mit QuickAccessDisplay vorgenommene Einstellung wirkt, muss der Backstage-Bereich neu angezeigt werden. Da Sie den Backstage-Bereich aber vermutlich ohnehin für den ganzen Zeitraum anpassen möchten, in dem der Benutzer mit Ihrer Anwendung arbeitet, können Sie die Anpassung auch gleich beim Öffnen der Anwendung vornehmen und diese beim Schließen wieder rückgängig machen. Den Aufruf von QuickAccessDisplay können Sie natürlich auch in der onLoad-Prozedur des customUI-Elements unterbringen.

Dazu klicken Sie im Ribbon-Admin 2010 mit der rechten Maustaste auf das Attribut onLoad des customUI-Elements. Wählen Sie aus dem Kontextmenü den Eintrag Callback hinzufügen aus. Gegebenenfalls wird noch ein Verweis auf die Office-Bibliothek zum VBA-Projekt hinzugefügt und ein Modul namens mdlRibbons angelegt. Fügen Sie die oben angegebenen Deklarationen und API-Funktionen sowie die Funktion QuickAccessDisplay zum Modul mdlRibbons hinzu.

Vergessen Sie nicht, die neue Version mit dem onLoad-Attribut erneut in die Anwendung zu übertragen!

Geschafft: Der Backstage-Bereich sieht nun so aus wie in Bild 5.

Backstage-Bereich, komplett geleert

Bild 5: Backstage-Bereich, komplett geleert