Neue Ribbon Registerkarte mit Schaltflächen erstellen

In diesem Beitrag zeigen wir, wie sich ab Excel 2007 eine neue Registerkarte in der Multifunktionsleiste (Ribbon) hinzufügen lässt und wie diese mit entsprechenden Funktionen belegt werden kann. Das Beispiel demonstriert die grundlegende Funktionsweise zur Erstellung von neuen Elementen in der Werkzeugleiste. Weiterführende Informationen zu der Ribbon-Programmierung finden Sie hier.

Die Erstellung der neuen Registerkarte und Schaltflächen ist zweigeteilt. Im ersten Schritt müssen die Registerkarte und die Schaltflächen per XML-Programmierung hinzugefügt werden. Im zweiten Schritt werden die neuen Schaltflächen mit dem entsprechenden VBA-Code (Makro) verknüpft.

1. Hinzufügen der Registerkarte und der Schaltflächen per XML Programmierung

Für diesen ersten Schritt steht das Tool Custom UI Editor zur Verfügung, welches auch in unserem Downloadbereich heruntergeladen werden kann.

Wenn Sie das Tool heruntergeladen und installiert haben, können Sie sofort mit der Arbeit beginnen. Gehen Sie dazu wie folgt vor:

  1. Öffnen Sie die Excel-Datei, welche Sie mit der neuen Registerkarte erweitern möchten im Custom UI Editor
  2. Fügen Sie über das Menü Insert / Office 2010 Custom UI Part für Excel 2010 oder über Insert / Office 2007 Custom UI Part für Excel 2007 einen neuen XML-Container hinzu. Achten Sie bitte darauf, dass Sie den für Ihre Excel-Version richtigen Container hinzufügen.
  3. Fügen Sie anschließen für Excel 2010 folgenden XML-Code hinzu und speichern die Änderungen ab, das Ergebnis sehen Sie in Abbildung 1.

XML-Code

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<ribbon startFromScratch="false">
    <tabs>
        <tab id="Tab1" label="Test-Register">
            <group id="Gruppe1" label="Anpassungen">
                <button id="But1" 
                      label="Import Artikelliste" 
                      imageMso="ImportSavedImports" 
                      size="large" 
                       onAction="Button_Import_Artikel" />
                <button id="But2" 
                      label="Import Mitarbeiterliste" 
                      imageMso="ConditionalFormattingHighlightDateOccuring" 
                      size="large" 
                       onAction="Button_Import_Mitarbeiter" />
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>


Abbildung 1

Damit ist der XML-Code in der Excel-Datei enthalten und die Registerkarte sowie die beiden neuen Schaltflächen entsprechend in die Excel-Datei eingefügt.

Betrachten wir den XML-Code nun aber etwas näher.

Zuerst wird das XML-Schema hinzugefügt. Der Befehl startFromScratch="false" bedeutet, dass alle vorhandenen Menüeinträge unverändert bestehen bleiben. Würde die Eigenschaft auf "true" gesetzt, würden alle vorhandenen Menüeinträge gelöscht werden. Das sich diese Ribbon-Änderungen nur auf die aktuelle Excel-Datei beziehen, kann nicht passieren. Sobald die Excel-Datei geschlossen wird, wird der Ursprungszustand wieder hergestellt, da die Menüprogrammierung eben direkt an die betroffene Excel-Datei gebunden ist.

Anschließend wird über die Tags <tabs> und <tab> eine neue Registerkarte mit der Bezeichnung "Test-Register" hinzugefügt.

Der Tag <group> sorgt dafür, dass eine neue Befehlsgruppe mit der Bezeichnung "Anpassungen" erzeugt wird.

Mit Hilfe des Tags <button> werden schließlich zur Gruppe "Anpassungen" die Schaltflächen "Import Artikelliste" und "Import Mitarbeiterliste" hinzugefügt.

Über den Parameter id erhalten die Registerkarten, Gruppen und Schaltflächen ein eindeutiges Kennzeichen. Sie müssen also darauf achten, dass die gleiche id nicht zwei Mal vergeben wird.

Wenn Sie nun die Excel-Datei mit dem neuen XML-Code in Excel öffnen wird die Registerkarte mit den beiden Schaltflächen angezeigt, siehe Abbildung 2.

 
Abbildung 2

Da die beiden Schaltflächen nun wie gedacht auf der neuen Registerkarte zu finden sind, muss denen noch Leben eingehaucht werden.

2. So werden den Schaltflächen die neuen Funktionen zugewiesen

Um den beiden neuen Schaltflächen einen entsprechenden VBA-Code zuzuweisen gehen Sie wie folgt vor:

  1. Öffnen Sie im VBA Editor ein neues Codemodul
  2. und fügen Sie den folgenden VBA-Code ein

VBA-Code für Schaltfläche 1

Sub Button_Import_Artikel(control As IRibbonControl)
'** Schaltfläche: ID= But1
'** Aufrufen der Prozedur
Import_Artikelliste
End Sub

VBA-Code für Schaltfläche 2

Sub Button_Import_Mitarbeiter(control As IRibbonControl)
'** Schaltfläche: Button ID= But2
'** Aufrufen der Prozedur
Import_Mitarbeiterliste
End Sub

Wichtig ist bei der Erstellung des VBA-Codes, dass der Prozedurname des Makros, also "Button_Import_Artikel" genau mit der Angabe beim Parameter onAction im XML-Code übereinstimmt. Nur wenn dies der Fall ist, funktioniert die Zuweisung des VBA-Codes korrekt.

In den beiden Beispiel-Codes wird jeweils ein weiteres Makro mit den entsprechenden Funktionalitäten zum Importieren der Artikelliste bzw. der Mitarbeiterliste aufgerufen.

Diese beiden Markos erhalten nur jeweils eine Bildschirmausgabe, so dass die Funktionsweise der Makros geprüft werden kann. Auf die allseits beliebte Hallo-Welt-Ausgabe haben wir an dieser Stelle verzichtet.

Fügen Sie im gleichen Code-Modul bitte noch folgende beiden kurzen Prozeduren ein.

Sub Import_Artikelliste()
'** Beispielcode 1
MsgBox "Artikelliste wird importiert!", vbInformation, "Hinweis"
End Sub

Sub Import_Mitarbeiterliste()
'** Beispielcode 1
MsgBox "Mitarbeiterliste wird importiert!", vbInformation, "Hinweis"
End Sub

 

Unter dem folgenden Download-Link können Sie die Beispieldatei mit der neuen Registerkarte herunterladen.