Office 2007: Eigene Ribbons programmieren

01.01.2007 von André Minhorst
Office 2007 und damit auch die neue Variante von Access kommt mit neuen Menüleisten namens Ribbons. Diese bauen auf einem komplett neuen Modell auf und lassen sich mit XML anpassen. Neben Wissenswertem über den Menüleistentyp erfahren Sie auch, wie Sie eigene Ribbons programmieren und die vorhandenen anpassen können.

Mit Access 2007 beginnt ein neues Zeitalter, zumindest was die Benutzeroberfläche betrifft. In diesem Beitrag beschäftigen wir uns speziell mit den neuen Menüleisten, auch Ribbons genannt. Die offizielle deutsche Übersetzung lautet Multifunktionsleisten; der Einfachheit halber halte ich mich in diesem Artikel aber an den englischen Begriff.

Bild 1: Beispiel für die neuen Ribbons in Access.

Bild 1 zeigt einige Ribbons, von denen sich stets nur eines im Vordergrund befindet, und zwar bei aktiviertem Erstellen-Ribbon. Einige grundsätzliche Dinge lassen sich bereits anhand dieser Abbildung erläutern:

1. Es gibt einige Ribbons, die man immer aktivieren kann, wie Start, Erstellen, Externe Daten und Datenbanktools.

2. Weitere Ribbons blendet Access je nach Bedarf und aktiviertem Objekttyp ein; in der Abbildung etwa ist gerade eine Tabelle aktiviert (nicht sichtbar), weshalb das zusätzliche Ribbon Datenblatt der Rubrik Tabellentools eingeblendet ist.

Kontextmenus für Ribbons

3. Ein Klick mit der rechten Maustaste auf eines der Steuerelemente eines Ribbons bringt das Kontextmenü aus Bild 2 zutage. Hier ist von einer Symbolleiste für den Schnellzugriff die Rede, die Sie in Bild 1 oben links neben dem Office-Button finden. Dieser können Sie Befehle aus den anderen Ribbons hinzufügen.

Bild 2: Kontextmenü eines Ribbon-Steuerelements.

Einen Eintrag namens Anpassen wie in älteren Access-Versionen sucht man hingegen vergeblich. Das deutet bereits darauf hin, dass Individualität hier nicht besonders groß geschrieben wird. Immerhin lassen sich die Ribbons mit dem Eintrag Multifunktionsleiste minimieren ausblenden. Es verbleibt dann alles so, wie in Bild 3 zu sehen – Platz sparend ist das allemal, und die Ribbons lassen sich per Mausklick ein- und ausblenden.

Bild 3: Der Rest der Ribbons im ausgeblendeten Zustand.

Standard-Befehle

4. Alle Funktionen, die Sie möglicherweise in den Ribbons vermissen, und alles, was auch nur annähernd mit der Datenbank selbst und nicht mit den enthaltenen Objekten zu tun hat, finden Sie in dem Fenster, das sich bei einem Klick auf den Office-Button öffnet (Bild 4). Die Optionen verstecken sich nun komplett hinter der dortigen Schaltfläche Access-Optionen; dort hat Microsoft auch etwa die Startoptionen und die Sicherheitseinstellungen untergebracht. Das soll jedoch nicht das Thema dieses Artikels sein.

Bild 4: Allgemeine Datenbankfunktionen und sämtliche Optionen befinden sich hinter dem Office-Button.

5. Zusammengehörende Befehle sind auch optisch zusammengefasst. Bei den alten Menüleisten gab es lediglich einen Unterteilungsstrich zum Trennen verschiedener Funktionsgruppen; in Ribbons werden diese optisch ansprechend eingerahmt.

6. Ein Pfeil nach unten auf einer Ribbon-Schaltfläche signalisiert, dass neben dem abgebildeten Befehl noch weitere ähnliche Befehle vorhanden sind, die man per Klick auf den Pfeil ausklappen kann. Paradebeispiel: die Ansichten von Objekten wie beispielsweise Tabellen (Bild 5). Im Gegensatz zu älteren Access-Versionen gibt es hier jedoch weit mehr Gestaltungsmöglichkeiten wie etwa mehrzeilige, individuell formatierte Texte.

Bild 5: Ausklappen eines„Unter“-Ribbons.

Eigene Ribbons bauen

Basis für ein benutzerdefiniertes Ribbon ist ein XML-Dokument mit dessen Definition. Das XML-Dokument können Sie mit jedem beliebigen Texteditor eingeben, es empfiehlt sich aber der Einsatz eines Tools, das IntelliSense oder eine ähnliche Technik unterstützt, mit der man basierend auf der XSD-Datei die gewünschten Elemente schnell zusammenstellen kann.

Neben einer passenden XML-Datei benötigen Sie im einfachsten Fall nur eine Tabelle namens USysRibbons, die den Namen des Ribbons und die XML-Datei enthält. Nach wenigen Schritten können Sie mit dieser Grundausrüstung schon Ihr erstes eigenes Ribbon anzeigen.

Alle Ribbons ausblenden

Um das erste Beispiel so einfach wie möglich zuhalten, verwenden Sie den folgenden Ausdruck als XML-Dokument:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="true"/>
</customUI>

Fügen Sie diesen in eine neue Tabelle namens USysRibbons ein (Bild 6). Achten Sie auf die genaue Schreibweise für den Tabellennamen und den Inhalt des XML-Dokuments.

Bild 6: Die Tabelle USysRibbons mit einem einfachen Ribbon-XML-Dokument.

Ribbon aktivieren

Das Beispiel-XML-Dokument tut nichts anderes, als ein neues, leeres Ribbon zu erzeugen – und dies „from scratch“, was bedeutet, dass alle anderen Ribbons ausgeblendet werden. Damit Access die in der Tabelle USysRibbons der aktuellen Datenbankanwendung enthaltenen Ribbons registrieren kann, schließen Sie die Datenbank einmal und öffnen sie erneut.

Anschließend passiert zwar noch nichts, aber wenn Sie nun den Office-Button anklicken, mit der Optionen-Schaltfläche den passenden Dialog öffnen und dort im Bereich Aktuelle Datenbank unter Multifunktionsleisten- und Symbolleistenoptionen das Kombinationsfeld Name der Multifunktionsleiste aufklappen, sollten Sie den Namen des in der Tabelle angelegten Ribbons finden (Bild 7).

Bild 7: Auswählen des beim Start zu aktivierenden Ribbons.

Nach dieser Auswahl und dem Schließen des Dialogs fordert Access Sie auf, die Anwendung erneut zu schließen und wieder zu öffnen. Und wenn Sie alles richtig gemacht haben, sieht der obere Bereich Ihrer Anwendung nun wie in Bild 8 aus.

Bild 8: Ohne Ribbons ist im oberen Bereich des Access-Fensters wenig los.

Bereiche und Steuerelemente hinzufügen

Nun möchten Sie ja nicht nur die Standard-Ribbons entfernen, sondern den Benutzern Ihrer Anwendung auch den Zugriff auf deren Funktionen bieten. Ergänzen Sie das XML-Dokument zunächst wie in Listing 1.

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="true">
<tabs>
<tab id="ErstesBeispieltab" label="Erstes Beispieltab" visible="true">
<group id="ErsteBeispielgruppe" label="Erste Beispielgruppe">
<button id="Beispielschaltfläche" label="Beispielschaltfläche" onAction="=ErsteBeispielfunktion()" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>

Das Ergebnis dieses XML-Dokuments zeigt Bild 9. Bevor Sie sich nun direkt an eigene Experimente mit Tabs, Groups und Buttons begeben, sollen Sie gewarnt sein: Access meldet keine Fehler, wenn es nicht funktioniert, sondern zeigt das benutzerdefinierte Ribbon einfach nicht an.

Try and Cry

Bild 9: Eine erste Schaltfläche in einer ersten Beispielgruppe in einem ersten Beispiel-Tab.

Das bedeutet, dass Sie eine Menge Tests fahren werden – und dass Sie die Schaltflächen zum Schließen der aktuellen Anwendung und zum erneuten Öffnen bald ohne Hinzusehen beherrschen. Bevor Sie auf die Schaltfläche klicken, müssen Sie übrigens noch die passende Routine in Form einer Function-Prozedur anlegen, die für dieses Beispiel sehr einfach gehalten und in Listing 2 abgebildet ist.

Public Function ErsteBeispielfunktion()
MsgBox "Sie haben die erste Beispielschaltfläche angeklickt."
End Function

Weitere Steuerelemente einbauen

Natürlich bieten Ribbons nicht nur Schaltflächen, sondern noch eine Reihe weiterer Steuerelemente an, zum Beispiel Kombinationsfelder. Listing 3 zeigt das vorherige, um ein Combobox-Element sowie drei Einträge erweiterte XML-Dokument. Das Ribbon sieht nun wie in Bild 10 aus.

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" loadImage="getImages">
<ribbon startFromScratch="true">
<tabs>
<tab id="ErstesBeispieltab" label="Erstes Beispieltab" visible="true">
<group id="ErsteBeispielgruppe" label="Erste Beispielgruppe">
<button id="Beispielschaltfläche" label="Beispielschaltfläche" onAction="=ErsteBeispielfunktion()" />
<comboBox id="Beispielkombinationsfeld" label="Beispielkombinationsfeld">
<item id="Eintrag1" label="Eintrag1" />
<item id="Eintrag2" label="Eintrag2" />
<item id="Eintrag3" label="Eintrag3" />
</comboBox>
</group>
</tab>
</tabs>
</ribbon>
</customUI>

Bild 10: Ribbon mit Kombinationsfeld.

Welche anderen Steuerelemente es gibt und wie Sie das Aussehen des Ribbons optimieren können, etwa durch Hinzufügen von Bildern, erfahren Sie in einer der folgenden Ausgaben.

Alternativen zur Tabelle MSysRibbons

Sie können auch XML-Dokumente als Basis für Ribbons bereitstellen, die nicht in die Tabelle MSysRibbons eingebunden sind. Liegt die Beschreibung des Ribbons in einer herkömmlichen Datei vor, können Sie die Methode LoadCustomUI des Application-Objekts verwenden. Ein Beispiel sieht etwa wie in Listing 4 aus.

Public Function RibbonLaden()
Dim strDatei As String
Dim strXML As String

strDatei = CurrentProject.Path & "\ribbon.xml"
Open strDatei For Input As #1
strXML = Input(LOF(1), 1)
Close #1
Application.LoadCustomUI "Beispielribbon", strXML
End Function

Diese Routine rufen Sie innerhalb der Datenbank auf, um das in der XML-Datei definierte Ribbon in der Datenbank verfügbar zu machen. Anschließend öffnen Sie wiederum den Optionen-Dialog und wählen an der bereits bekannten Stelle den Eintrag Beispielribbon aus. Access fordert Sie nun zum Schließen und erneuten Öffnen der Anwendung auf; anschließend zeigt Access das erwartete Ribbon – nicht an! Leider verliert Access die Information über das gespeicherte XML-Dokument und muss es bei jedem Start neu einlesen. Dazu erstellen Sie ein Makro namens AutoExec wie in Bild 11, schließen und öffnen die Anwendung erneut und dann sollte es funktionieren.

Bild 11: Das AutoExec-Makro ruft beim Start der Datenbankanwendung die Funktion RibbonLaden auf.

Zusammenfassung und Ausblick

Mit den Informationen aus dem vorliegenden Beitrag können Sie rudimentäre benutzerdefinierte Ribbons erstellen. Es fehlen aber noch einige weitere Informationen, die wir Ihnen in einer der kommenden Ausgaben nachreichen: Wie Sie Ribbons erstellen, die nur beim Anzeigen bestimmter Formulare oder Berichte erscheinen, oder wie Sie Ribbons mit Bildern ein perfektes Layout verleihen. Ebenfalls interessant ist die Möglichkeit, aufwendigere ToolTip-Texte als mit älteren Access-Versionen anzeigen zu können. Es gibt also noch einiges zu tun – lassen Sie sich überraschen! (am/mha)

Autor André Minhorst <am> ist Dipl.Ing. und freiberuflicher Autor und Programmierer in Duisburg. Er beschäftigt sich seit einigen Jahren intensiv mit den Themen Access, SQL Server und ASP. Neben seiner Autorentätigkeit hat er ein eigenes Redaktionsbüro und entwickelt Datenbank- und Internet-Anwendungen. Sie erreichen ihn unter www.minhorst.com bzw. andre@minhorst.com.