J'ai rencontré des difficultés avec la solution de Roi-Kyi Bryant lorsque plusieurs compléments ont tenté de modifier le ruban. Je n'ai pas non plus accès administrateur sur mon ordinateur de travail, ce qui a exclu l'installation du Custom UI Editor
. Donc, si vous êtes dans le même bateau que moi, voici un exemple alternatif à la personnalisation du ruban en utilisant uniquement Excel. Notez que ma solution est dérivée du guide Microsoft .
- Créez des fichiers / fichiers Excel dont vous souhaitez personnaliser les rubans. Dans mon cas, j'ai créé deux
.xlam
fichiers, Chart Tools.xlam
etPriveleged UDFs.xlam
, pour montrer comment plusieurs compléments peuvent interagir avec le ruban.
- Créez un dossier, avec n'importe quel nom de dossier, pour chaque fichier que vous venez de créer.
- Dans chacun des dossiers que vous avez créés, ajoutez un dossier
customUI
et _rels
.
- Dans chaque
customUI
dossier, créez un customUI.xml
fichier. Le customUI.xml
fichier détaille la manière dont les fichiers Excel interagissent avec le ruban. La partie 2 du guide Microsoft couvre les éléments du customUI.xml
fichier.
Mon customUI.xml
fichier pour Chart Tools.xlam
ressemble à ceci
<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>
Mon customUI.xml
fichier pour Priveleged UDFs.xlam
ressemble à ceci
<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>
- Pour chaque fichier que vous avez créé à l'étape 1, ajoutez un suffixe
.zip
à leur nom de fichier. Dans mon cas, j'ai renommé Chart Tools.xlam
en Chart Tools.xlam.zip
et Privelged UDFs.xlam
enPriveleged UDFs.xlam.zip
.
- Ouvrez chaque
.zip
fichier et accédez au _rels
dossier. Copiez le .rels
fichier dans le _rels
dossier que vous avez créé à l'étape 3. Modifiez chaque .rels
fichier avec un éditeur de texte. À partir du guide Microsoft
Entre l' <Relationship>
élément final et l' <Relationships>
élément de fermeture
, ajoutez une ligne qui crée une relation entre le fichier document et le fichier de personnalisation. Assurez-vous de spécifier correctement les noms de dossier et de fichier.
<Relationship Type="http://schemas.microsoft.com/office/2006/
relationships/ui/extensibility" Target="/customUI/customUI.xml"
Id="customUIRelID" />
Mon .rels
fichier pour Chart Tools.xlam
ressemble à ceci
<?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>
Mon .rels
fichier pour Priveleged UDFs
ressemble à ceci.
<?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>
- Remplacez les
.rels
fichiers de chaque .zip
fichier par le .rels
/ les fichiers que vous avez modifiés à l'étape précédente.
- Copiez et collez le
.customUI
dossier que vous avez créé dans le répertoire de base du .zip
fichier / fichiers.
- Supprimez l'
.zip
extension de fichier des fichiers Excel que vous avez créés .
- Si vous avez créé des
.xlam
fichiers, de retour dans Excel, ajoutez-les à vos compléments Excel.
- Le cas échéant, créez des rappels dans chacun de vos compléments. À l'étape 4, il y a des
onAction
mots - clés dans mes boutons. Le onAction
mot-clé indique que, lorsque l'élément conteneur est déclenché, l'application Excel déclenchera la sous-routine entre guillemets directement après le onAction
mot - clé. C'est ce qu'on appelle un rappel . Dans mes .xlam
fichiers, j'ai un module appelé CallBacks
où j'ai inclus mes sous-routines de rappel.
Mon CallBacks
module pour Chart Tools.xlam
ressemble à
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
Mon CallBacks
module pour Priveleged UDFs.xlam
ressemble à
Option explicite
Public Sub InitialisePrivelegedUDFsCallBack(ByRef control As IRibbonControl)
ThisWorkbook.InitialisePrivelegedUDFs
End Sub
Public Sub DeInitialisePrivelegedUDFsCallBack(ByRef control As IRibbonControl)
ThisWorkbook.DeInitialisePrivelegedUDFs
End Sub
Différents éléments ont une signature de sous-routine de rappel différente. Pour les boutons, le paramètre de sous-routine requis est ByRef control As IRibbonControl
. Si vous ne vous conformez pas à la signature de rappel requise, vous recevrez une erreur lors de la compilation de votre / vos projets VBA. La partie 3 du guide Microsoft définit toutes les signatures de rappel.
Voici à quoi ressemble mon exemple fini
Quelques conseils de clôture
- Si vous souhaitez que les compléments partagent les éléments du ruban, utilisez le mot clé
idQ
et xlmns:
. Dans mon exemple, les Chart Tools.xlam
et les Priveleged UDFs.xlam
deux ont accès aux éléments avec idQ
un égal à x:chartToolsTab
et x:privelgedUDFsTab
. Pour que cela fonctionne, l' x:
est nécessaire, et je l' ai défini son espace de noms dans la première ligne de mon customUI.xml
fichier, <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" xmlns:x="sao">
. La section Deux façons de personnaliser l'interface utilisateur Fluent dans le guide Microsoft donne plus de détails.
- Si vous souhaitez que les compléments accèdent aux éléments du ruban fournis avec Excel, utilisez le
isMSO
mot - clé. La section Deux façons de personnaliser l'interface utilisateur Fluent dans le guide Microsoft donne plus de détails.