Wenn Sie ein Abonnement des Magazins 'Access im Unternehmen' besitzen, können Sie sich anmelden und den kompletten Artikel lesen.
Anderenfalls können Sie das Abonnement hier im Shop erwerben.
COM-Add-In-Ribbons mit dem XML-Designer
Wenn Sie in Visual Studio ein COM-Add-In für Access erstellen (wie im Beitrag »Access-Add-In mit VSTO«), können Sie zwei Möglichkeiten nutzen, um Ribbons für das Add-In hinzuzufügen. Der erste Weg nutzt einen grafischen Editor und wird bereits im genannten Beitrag beschrieben. Allerdings erlaubt dieser nicht, alle verfügbaren Elemente und Techniken zu nutzen. Genau genommen können Sie damit nur Tabs, Groups und die darin enthaltenen Steuerelemente hinzufügen. Wenn Sie, wie Sie es von Access gewohnt sind, in die Vollen gehen wollen und etwa auch das Backstage anpassen oder eingebaute Ribbon-Schaltflächen mit neuen Funktionen versehen wollen, finden Sie im vorliegenden Artikel die richtigen Techniken.
Voraussetzungen
Um die in diesem Beitrag beschriebenen Techniken verwenden zu können, benötigen Sie ein COM-Add-In, das mit Access gestartet wird. Die Grundlagen dazu finden Sie im Beitrag Access-Add-In mit VSTO (www.access-im-unternehmen.de/1092). Der Beitrag beschreibt die Vorgehensweise für C#, Sie finden im Download aber auch ein für den Einsatz mit Access angepasstes COM-Add-In-Projekt. Auf diesem setzt dieser Beitrag auf. Außerdem verwenden wir Visual Studio 2015 in der Community Edition, die für einzelne Entwickler kostenlos verfügbar ist.
Hinweis
Alle wichtigen Grundlagen und Informationen sowie Listen der Callback-Funktionen für den Backstage-Bereich des Ribbons finden Sie auf der Internetseite mit dem Titel Einführung in die Office 2010-Backstage-Ansicht für Entwickler (aktueller LInk: https://msdn.microsoft.com/de-de/library/ee691833(office.14).aspx).
Die Grundlagen für den Ribbon-Teil finden Sie unter dem Titel Anpassen der Multifunktionsleisten-Benutzeroberfläche von Office (2007) für Entwickler - Teil 1 und den folgenden Teilen (aktueller Link: https://msdn.microsoft.com/de-de/library/aa338202.aspx).
Ribbon zum Add-In hinzufügen
Wie bereits erwähnt, gibt es zwei Möglichkeiten, ein Ribbon zu einem COM-Add-In auf Basis der VSTO-Vorlagen hinzuzufügen. Der erste Eintrag namens Menüband (Visueller Designer) liefert einen Designer, mit dem Sie das Ribbon per Drag and Drop aus der Toolbox zusammenstellen können. Dafür stehen aber nur die wichtigsten Elemente zur Verfügung. Wer bereits unter Access Ribbons definiert hat, wird hier einiges vermissen. In diesem Fall wählt man besser den Eintrag Menüband (XML) und gibt beispielsweise den Namen Ribbon_Access.vb an (s. Bild 1). Dies fügt zwei Klassen namens Ribbon_Access.vb und Ribbon_Access.xml zum Projekt hinzu. Damit die in der Datei Ribbon_Access.xml enthaltene Ribbon-Definition auf die Host-Anwendung, in diesem Fall Access, angewendet wird, kopieren Sie die noch auskommentierte Methode CreateRibbonExtensibilityObject aus dem Modul Ribbon_Access.vb in das Klassenmodul ThisAddIn.vb und entfernen die Kommentarzeichen:
Bild 1: Hinzufügen eines Ribbons mit der Vorlage Menüband (XML)Protected Overrides Function _
CreateRibbonExtensibilityObject() _
As Microsoft.Office.Core.IRibbonExtensibility
Return New Ribbon_Access()
End Function
Diese Methode wird beim Starten des Add-Ins automatisch ausgeführt.
Die XML-Definition des Ribbons sieht standardmäßig wie folgt aus:
<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
<ribbon>
<tabs>
<tab idMso="TabAddIns">
<group id="MyGroup"
label="My Group">
</group>
</tab>
</tabs>
</ribbon>
</customUI>
Wenn Sie das Add-In nun starten, erscheinen allerdings keine neuen Elemente im Ribbon von Access. Der Grund ist einfach: Die automatisch erstellte Ribbon-Definition aus der Datei Ribbon_Access.xml versucht, eine Gruppe unterhalb eines Tab-Elements mit der idMso mit dem Wert TabAddIns anzulegen. Warum wird dieses Tab dann von der Vorlage als Ausgangspunkt für die Ribbon-Definition festgelegt? Ganz einfach: Weil es offiziell gar keine VSTO-Vorlage für Access-Add-Ins gibt, haben wir ja, wie im Beitrag Access-Add-In mit VSTO beschrieben, ein Excel-Add-In in ein Access-Add-In umgewandelt. Und unter Excel gibt es sehr wohl ein Ribbon-Tab namens TabAddIns. Wenn wir also einfach das eingebaute group-Element TabAddIns durch ein benutzerdefiniertes Element ersetzen, sollte es funktionieren.
Benutzerdefiniertes Tab mit Gruppe und Schaltfläche hinzufügen
Ein eingebautes tab-Element verwendet die für dieses Element festgelegte idMso (Übersicht der idMsos für alle Elemente siehe Datei AccessControl.xlsx aus dem Download von der Seite http://go.microsoft.com/fwlink/?LinkID=181052), um festzulegen, dass die darunter abgebildeten group-Elemente unterhalb des eingebauten Elements mit der angegebenen idMso angelegt werden sollen. Gegebenenfalls möchten Sie auch noch Elemente in eine eingebaute Gruppe einfügen, dann würden Sie auch für die Gruppe die entsprechende idMso angeben.
Wir wollen aber ein neues tab-Element erstellen, weshalb wir nicht die Eigenschaft idMso angeben, sondern mit id den Namen unseres benutzerdefinierten Elements. Dieses soll tabAddIn heißen. Darunter wollen wir zwei Gruppen anlegen, die jeweils eine Schaltfläche enthalten. Die erste Gruppe soll Befehle erhalten, die sich auf die Access-Anwendung selbst beziehen, die zweite Befehle, die sich auf die aktuell geöffnete Datenbank beziehen. Für den zweiten Teil arbeiten wir im Beitrag Datenzugriff per VSTO-Add-In (www.access-im-unternehmen.de/1094) noch eine Lösung heraus, mit der wir dafür sorgen können, dass die Elemente der zweiten Gruppe nur aktiviert sind, wenn Access gerade eine Datenbankanwendung geladen hat. Die Definition unseres Ribbons sieht somit wie in Listing 1 aus.
Dies war die Leseprobe dieses Artikels.
Melden Sie sich an, um auf den vollständigen Artikel zuzugreifen.