Ich hatte Probleme mit der Lösung von Roi-Kyi Bryant, als mehrere Add-Ins versuchten, das Menüband zu ändern. Ich habe auch keinen Administratorzugriff auf meinem Arbeitscomputer, was die Installation von ausgeschlossen hat Custom UI Editor. Wenn Sie sich also im selben Boot wie ich befinden, finden Sie hier ein alternatives Beispiel zum Anpassen des Menübands nur mit Excel. Beachten Sie, dass meine Lösung aus dem Microsoft-Handbuch abgeleitet ist .
- Erstellen Sie Excel-Dateien, deren Bänder Sie anpassen möchten. In meinem Fall habe ich zwei
.xlamDateien erstellt Chart Tools.xlamund Priveleged UDFs.xlam, um zu demonstrieren, wie mehrere Add-Ins mit der Multifunktionsleiste interagieren können.
- Erstellen Sie für jede gerade erstellte Datei einen Ordner mit einem beliebigen Ordnernamen .
- Fügen Sie in jedem der von Ihnen erstellten Ordner einen
customUIund einen _relsOrdner hinzu.
customUIErstellen Sie in jedem Ordner eine customUI.xmlDatei. Die customUI.xmlDatei beschreibt, wie Excel-Dateien mit dem Menüband interagieren. Teil 2 des Microsoft-Handbuchs behandelt die Elemente in der customUI.xmlDatei.
Meine customUI.xmlDatei für Chart Tools.xlamsieht so aus
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" xmlns:x="sao">
<ribbon>
<tabs>
<tab idQ="x:chartToolsTab" label="Chart Tools">
<group id="relativeChartMovementGroup" label="Relative Chart Movement" >
<button id="moveChartWithRelativeLinksButton" label="Copy and Move" imageMso="ResultsPaneStartFindAndReplace" onAction="MoveChartWithRelativeLinksCallBack" visible="true" size="normal"/>
<button id="moveChartToManySheetsWithRelativeLinksButton" label="Copy and Distribute" imageMso="OutlineDemoteToBodyText" onAction="MoveChartToManySheetsWithRelativeLinksCallBack" visible="true" size="normal"/>
</group >
<group id="chartDeletionGroup" label="Chart Deletion">
<button id="deleteAllChartsInWorkbookSharingAnAddressButton" label="Delete Charts" imageMso="CancelRequest" onAction="DeleteAllChartsInWorkbookSharingAnAddressCallBack" visible="true" size="normal"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
Meine customUI.xmlDatei für Priveleged UDFs.xlamsieht so aus
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" xmlns:x="sao">
<ribbon>
<tabs>
<tab idQ="x:privelgedUDFsTab" label="Privelged UDFs">
<group id="privelgedUDFsGroup" label="Toggle" >
<button id="initialisePrivelegedUDFsButton" label="Activate" imageMso="TagMarkComplete" onAction="InitialisePrivelegedUDFsCallBack" visible="true" size="normal"/>
<button id="deInitialisePrivelegedUDFsButton" label="De-Activate" imageMso="CancelRequest" onAction="DeInitialisePrivelegedUDFsCallBack" visible="true" size="normal"/>
</group >
</tab>
</tabs>
</ribbon>
</customUI>
- Fügen Sie für jede Datei, die Sie in Schritt 1 erstellt haben, ein Suffix a
.zipan den Dateinamen an. In meinem Fall, ich umbenannt Chart Tools.xlamzu Chart Tools.xlam.zip, und Privelged UDFs.xlamzu Priveleged UDFs.xlam.zip.
- Öffnen Sie jede
.zipDatei und navigieren Sie zum _relsOrdner. Kopieren Sie die .relsDatei in den _relsOrdner, den Sie in Schritt 3 erstellt haben. Bearbeiten Sie jede .rels Datei mit einem Texteditor. Aus dem Microsoft-Handbuch
Fügen Sie zwischen dem letzten <Relationship>Element und dem schließenden
<Relationships>Element eine Zeile hinzu, die eine Beziehung zwischen der Dokumentdatei und der Anpassungsdatei herstellt. Stellen Sie sicher, dass Sie die Ordner- und Dateinamen korrekt angeben.
<Relationship Type="http://schemas.microsoft.com/office/2006/
relationships/ui/extensibility" Target="/customUI/customUI.xml"
Id="customUIRelID" />
Meine .relsDatei für Chart Tools.xlamsieht so aus
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/>
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>
<Relationship Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Target="/customUI/customUI.xml" Id="chartToolsCustomUIRel" />
</Relationships>
Meine .relsDatei für Priveleged UDFssieht so aus.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/>
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>
<Relationship Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Target="/customUI/customUI.xml" Id="privelegedUDFsCustomUIRel" />
</Relationships>
- Ersetzen Sie die
.relsDateien in jeder .zipDatei durch die .relsDatei / Dateien, die Sie im vorherigen Schritt geändert haben.
- Kopieren
.customUISie den von Ihnen erstellten Ordner und fügen Sie ihn in das Ausgangsverzeichnis der .zipDatei / Dateien ein.
- Entfernen Sie die
.zipDateierweiterung aus den von Ihnen erstellten Excel-Dateien .
- Wenn Sie
.xlamDateien erstellt haben , fügen Sie sie wieder in Excel zu Ihren Excel-Add-Ins hinzu.
- Erstellen Sie gegebenenfalls Rückrufe in jedem Ihrer Add-Ins. In Schritt 4 befinden sich
onActionSchlüsselwörter in meinen Schaltflächen. Das onActionSchlüsselwort gibt an, dass die Excel-Anwendung beim Auslösen des enthaltenen Elements die in Anführungszeichen eingeschlossene Unterroutine direkt nach dem onActionSchlüsselwort auslöst . Dies wird als Rückruf bezeichnet . In meinen .xlamDateien habe ich ein Modul namens, CallBacksin das ich meine Rückruf-Subroutinen aufgenommen habe.

Mein CallBacksModul für Chart Tools.xlamsieht aus wie
Option Explicit
Public Sub MoveChartWithRelativeLinksCallBack(ByRef control As IRibbonControl)
MoveChartWithRelativeLinks
End Sub
Public Sub MoveChartToManySheetsWithRelativeLinksCallBack(ByRef control As IRibbonControl)
MoveChartToManySheetsWithRelativeLinks
End Sub
Public Sub DeleteAllChartsInWorkbookSharingAnAddressCallBack(ByRef control As IRibbonControl)
DeleteAllChartsInWorkbookSharingAnAddress
End Sub
Mein CallBacksModul fürPriveleged UDFs.xlamsieht aus wie
Option Explizit
Public Sub InitialisePrivelegedUDFsCallBack(ByRef control As IRibbonControl)
ThisWorkbook.InitialisePrivelegedUDFs
End Sub
Public Sub DeInitialisePrivelegedUDFsCallBack(ByRef control As IRibbonControl)
ThisWorkbook.DeInitialisePrivelegedUDFs
End Sub
Verschiedene Elemente haben eine unterschiedliche Signatur der Rückruf-Subroutine. Für Schaltflächen ist der erforderliche Subroutinenparameter ByRef control As IRibbonControl. Wenn Sie nicht der erforderlichen Rückrufsignatur entsprechen, wird beim Kompilieren Ihres VBA-Projekts / Ihrer VBA-Projekte eine Fehlermeldung angezeigt. Teil 3 des Microsoft-Handbuchs definiert alle Rückrufsignaturen.
So sieht mein fertiges Beispiel aus

Einige abschließende Tipps
- Wenn Sie möchten, dass Add-Ins Multifunktionsleistenelemente gemeinsam nutzen, verwenden Sie das Schlüsselwort
idQund xlmns:. In meinem Beispiel haben die Chart Tools.xlamund Priveleged UDFs.xlambeide Zugriff auf die Elemente mit idQ's gleich x:chartToolsTabund x:privelgedUDFsTab. Damit dies funktioniert, x:ist das erforderlich, und ich habe seinen Namespace in der ersten Zeile meiner customUI.xmlDatei definiert <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" xmlns:x="sao">. Der Abschnitt Zwei Möglichkeiten zum Anpassen der fließenden Benutzeroberfläche im Microsoft-HandbuchWeitere Informationen finden Sie .
- Verwenden Sie das
isMSOSchlüsselwort, wenn Add-Ins auf mit Excel gelieferte Multifunktionsleistenelemente zugreifen sollen . Weitere Informationen finden Sie im Abschnitt Zwei Möglichkeiten zum Anpassen der fließenden Benutzeroberfläche im Microsoft-Handbuch .