J'ai rencontré des difficultés avec la solution de Roi-Kyi Bryant lorsque multiple add-ins ont essayé de modifier le ruban. Je n'ai pas non plus d'accès administrateur sur mon ordinateur de bureau, ce qui exclut l'installation de l'outil de gestion de l'interface utilisateur. Custom UI Editor
. Donc, si vous êtes dans le même bateau que moi, voici une alternative exemple de personnaliser le ruban en utilisant uniquement Excel. Remarque, ma solution est dérivée de la Guide Microsoft .
- Créez le ou les fichiers Excel dont vous souhaitez personnaliser les rubans. Dans mon cas, j'ai créé deux
.xlam
des fichiers, Chart Tools.xlam
y Priveleged UDFs.xlam
pour montrer comment plusieurs modules complémentaires peuvent interagir avec le ruban.
- Créez un dossier, avec n'importe quel nom de dossier, pour chaque que vous venez de créer.
- Dans chacun des dossiers que vous avez créés, ajoutez un fichier
customUI
y _rels
dossier.
- A l'intérieur de chaque
customUI
créez un customUI.xml
fichier. Le site customUI.xml
détaille comment les fichiers Excel interagissent avec le ruban. Partie 2 du guide Microsoft couvre les éléments de la customUI.xml
fichier.
Mon customUI.xml
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
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>
- Para chaque que vous avez créé à l'étape 1, ajoutez un suffixe
.zip
à leur nom de fichier. Dans mon cas, j'ai renommé Chart Tools.xlam
a Chart Tools.xlam.zip
y Privelged UDFs.xlam
a Priveleged UDFs.xlam.zip
.
- Ouvrir chaque
.zip
et naviguez jusqu'au fichier _rels
dossier. Copiez le .rels
vers le fichier _rels
que vous avez créé à l'étape 3. Modifiez chaque .rels
avec un éditeur de texte. De la Guide Microsoft
Entre la finale <Relationship>
et l'élément de fermeture <Relationships>
ajoutez une ligne qui crée une relation entre le fichier document et le fichier de personnalisation. Assurez-vous que vous spécifiez 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
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
pour Priveleged UDFs
ressemble à ça.
<?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>
- Remplacer le
.rels
dans chaque .zip
avec le fichier .rels
le(s) fichier(s) que vous avez modifié(s) à l'étape précédente.
- Copiez et collez le
.customUI
que vous avez créé dans le répertoire d'origine de l'utilisateur .zip
fichier/files.
-
Retirer le
.zip
l'extension de fichier des fichiers Excel que vous avez créés .
- Si vous avez créé
.xlam
de retour dans Excel, ajoutez-les à vos compléments Excel.
- Le cas échéant, créez rappels dans chacun de vos modules complémentaires. À l'étape 4, il y a
onAction
mots-clés dans mes boutons. Le site onAction
indique que, lorsque l'élément contenant est déclenché, l'application Excel déclenchera la sous-routine placée entre guillemets directement après le mot-clé onAction
mot-clé. C'est ce qu'on appelle un rappel . Dans mon .xlam
j'ai un module appelé CallBacks
où j'ai inclus mes sous-programmes de rappel.
![CallBacks Module]()
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
Les 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 callback requise, vous recevrez une erreur lors de la compilation de votre/vos projet(s) VBA. Partie 3 du guide Microsoft définit toutes les signatures de rappel.
Voici à quoi ressemble mon exemple fini
![Finished Product]()
Quelques conseils de clôture
- Si vous souhaitez que les modules complémentaires partagent des éléments du ruban, utilisez l'option
idQ
y xlmns:
mot-clé. Dans mon exemple, le Chart Tools.xlam
y Priveleged UDFs.xlam
tous deux ont accès aux éléments avec idQ
est égal à x:chartToolsTab
y x:privelgedUDFsTab
. Pour que cela fonctionne, le x:
est nécessaire, et j'ai défini son espace de noms dans la première ligne de mon fichier 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 de Fluent dans le Guide Microsoft donne quelques détails supplémentaires.
- Si vous souhaitez que les add-ins accèdent aux éléments du ruban livrés avec Excel, utilisez l'option
isMSO
mot-clé. La section Deux façons de personnaliser l'interface utilisateur de Fluent dans le Guide Microsoft donne quelques détails supplémentaires.
0 votes
Veuillez confirmer la version d'Excel que vous utilisez ?
0 votes
Cela est pour le Projet.