Projektanfrage

Projektanfrage über Web Formular   per Online-Formular 
Projektanfrage über E-Mail  Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!
Projektanfrage per Telefon  +49 (0)151 / 164 55 914
Projektanfrage weitere Informationen  weitere Informationen 

Sie benötigen Hilfe oder Unter-stützung? Nutzen Sie für Ihre Anfrage unser Online-Formular, senden Sie uns eine Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein! oder rufen Sie uns einfach an.

   
      Referenzen 

 Bosch 
  T-Systems
  Hagebau
  Siemens
 Areva  VW
 Haufe-Lexware  British American Tobacco
  nagel group farbe
   
     Programmierung
Excel Auftragsprogrammierung Access Auftragsprogrammierung
Word Auftragsprogrammierung Outlook Auftragsprogrammierung
   
   

Projektanfrage

 Sie benötigen eine Auftragsprogrammierung?
 Oder suchen Unterstützung bei der Lösungs-
 findung?

  Nutzen Sie unser Anfrageformular

  Jetzt anrufen unter 0151 / 164 55 914

 Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein! Projektanfrage per Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein! senden

  Weitere Informationen

sitepanel question2

P
r
o
j
e
k
t
a
n
f
r
a
g
e
   

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.

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.

 

   

Relevante Artikel

  • Vorhandenes Kontextmenü erweitern

    302009 Dieses Makro erweitert ein vorhandenes Kontextmenü um einen Eintrag. In diesem Fall heißt der neue Eintrag "Meine eigene Routine".Sub kontextmenue_erweitern()    'Den Eintrag "Meine eigene...

  • Workshop RibbonX-Programmierung

    Mit dem in diesem Beitrag vorgestellten 25-teiligen Workshop, erhalten Sie einen guten Überblick über die Programmierung von RibbonX bzw. von Multifunktionsleisten. Das Tutorial wurde von René...

  • Einzelne Menüpunkte deaktivieren (ausblenden)

    300021 Das Makro Menu_ID_ermitteln gibt im Direktfernster die ID´s der einzelnen Menüpunkte aus,mit der das entsprechende Menü angesprochen werden kann. Sub Menu_ID_ermitteln() Dim Menüleiste As CommandBar Dim i As...

  • 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...

  • Vorhandenes Menü erweitern

    300020 Mit diesem Programm kann das Menü "Extras" um einen neuen Menüpunkt erweitert werden:   Const MenüEintrag = "eigens Menü" Sub Menü_erweitern() Call Menüeintrag_löschen Set CB =...