Je cherche un moyen d'ajouter un onglet personnalisé dans le ruban Excel qui porterait quelques boutons. Je suis tombé sur certaines ressources pour y remédier via Google, mais toutes semblent douteuses et outrageusement compliquées.
Quel est le moyen simple et rapide de le faire? J'aimerais que le nouvel onglet soit chargé lorsque mon VBA est chargé dans Excel.
MISE À JOUR : J'ai essayé cet exemple à partir d' ici mais j'obtiens une erreur "objet requis" sur la dernière instruction:
Public Sub AddHighlightRibbon()
Dim ribbonXml As String
ribbonXml = "<mso:customUI xmlns:mso=""http://schemas.microsoft.com/office/2009/07/customui"">"
ribbonXml = ribbonXml + " <mso:ribbon>"
ribbonXml = ribbonXml + " <mso:qat/>"
ribbonXml = ribbonXml + " <mso:tabs>"
ribbonXml = ribbonXml + " <mso:tab id=""highlightTab"" label=""Highlight"" insertBeforeQ=""mso:TabFormat"">"
ribbonXml = ribbonXml + " <mso:group id=""testGroup"" label=""Test"" autoScale=""true"">"
ribbonXml = ribbonXml + " <mso:button id=""highlightManualTasks"" label=""Toggle Manual Task Color"" "
ribbonXml = ribbonXml + "imageMso=""DiagramTargetInsertClassic"" onAction=""ToggleManualTasksColor""/>"
ribbonXml = ribbonXml + " </mso:group>"
ribbonXml = ribbonXml + " </mso:tab>"
ribbonXml = ribbonXml + " </mso:tabs>"
ribbonXml = ribbonXml + " </mso:ribbon>"
ribbonXml = ribbonXml + "</mso:customUI>"
ActiveProject.SetCustomUI (ribbonXml)
End Sub
excel
vba
excel-2007
ribbonx
Bourdonner
la source
la source
Réponses:
AFAIK, vous ne pouvez pas utiliser VBA Excel pour créer un onglet personnalisé dans le ruban Excel. Vous pouvez cependant masquer / rendre visible un composant de ruban à l'aide de VBA. De plus, le lien que vous avez mentionné ci-dessus concerne MS Project et non MS Excel.
Je crée des onglets pour mes applications / compléments Excel à l'aide de cet utilitaire gratuit appelé Éditeur d'interface utilisateur personnalisé .
Edit: pour répondre à la nouvelle demande de l'OP
Didacticiel
Voici un petit tutoriel comme promis:
Après avoir installé l'éditeur d'interface utilisateur personnalisé (CUIE), ouvrez-le et cliquez sur Fichier | Ouvrez et sélectionnez le fichier Excel approprié. Veuillez vous assurer que le fichier Excel est fermé avant de l'ouvrir via CUIE. J'utilise une toute nouvelle feuille de calcul comme exemple.
Faites un clic droit comme indiqué dans l'image ci-dessous et cliquez sur "Office 2007 Custom UI Part". Il insérera le "customUI.xml"
Suivant Cliquez sur le menu Insertion | Exemple de XML | Onglet personnalisé. Vous remarquerez que le code de base est généré automatiquement. Vous êtes maintenant prêt à le modifier selon vos besoins.
Inspectons le code
label="Custom Tab"
: Remplacez "Onglet personnalisé" par le nom que vous souhaitez donner à votre onglet. Pour le moment, appelons cela "Jérôme".La partie ci-dessous ajoute un bouton personnalisé.
imageMso
: C'est l'image qui s'affichera sur le bouton. "HappyFace" est ce que vous verrez en ce moment. Vous pouvez télécharger plus d'identifiants d'image ici .onAction="Callback"
: "Callback" est le nom de la procédure qui s'exécute lorsque vous cliquez sur le bouton.Démo
Avec cela, créons 2 boutons et appelons-les "JG Button 1" et "JG Button 2". Gardons le visage heureux comme l'image du premier et gardons le "Soleil" pour le second. Le code modifié ressemble maintenant à ceci:
Supprimez tout le code généré dans CUIE, puis collez le code ci-dessus à la place. Enregistrez et fermez CUIE. Maintenant, lorsque vous ouvrez le fichier Excel, cela ressemblera à ceci:
Maintenant, la partie code. Ouvrez l'éditeur VBA, insérez un module et collez ce code:
Enregistrez le fichier Excel en tant que fichier prenant en charge les macros. Maintenant, lorsque vous cliquez sur le Smiley ou le Soleil, vous verrez la boîte de message correspondante:
J'espère que cela t'aides!
la source
J'ai pu accomplir cela avec VBA dans Excel 2013. Aucun éditeur spécial requis. Tout ce dont vous avez besoin est l'éditeur de code Visual Basic accessible dans l'onglet Développeur. L'onglet Développeur n'est pas visible par défaut, il doit donc être activé dans Fichier> Options> Personnaliser le ruban. Sous l'onglet développeur, cliquez sur le bouton Visual Basic. L'éditeur de code se lancera. Cliquez avec le bouton droit de la souris dans le volet Explorateur de projets sur la gauche. Cliquez sur le menu d'insertion et choisissez module. Ajoutez les deux sous-marins ci-dessous au nouveau module.
Appelez LoadCustRibbon sub dans le Wookbook open even et appelez le sous ClearCustRibbon dans l'événement Before_Close du fichier de code ThisWorkbook.
la source
J'ai lutté comme un fou, mais c'est en fait la bonne réponse. Pour ce que cela vaut, ce qui m'a manqué, c'est ceci:
Au fait, la page qui l'explique sur le site de Ron est maintenant à http://www.rondebruin.nl/win/s2/win002.htm
Et voici son exemple sur la façon dont vous activez / désactivez les boutons sur le ruban http://www.rondebruin.nl/win/s2/win013.htm
Pour d'autres exemples xml de rubans, veuillez également consulter http://msdn.microsoft.com/en-us/library/office/aa338202%28v=office.12%29.aspx
la source
Les réponses ici sont spécifiques à l'utilisation de l'éditeur d'interface utilisateur personnalisé. J'ai passé un certain temps à créer l'interface sans ce merveilleux programme, donc je documente la solution ici pour aider n'importe qui d'autre à décider s'il a besoin de cet éditeur d'interface utilisateur personnalisé ou non.
Je suis tombé sur la page Web d'aide Microsoft suivante - https://msdn.microsoft.com/en-us/library/office/ff861787.aspx . Cela montre comment configurer l'interface manuellement, mais j'ai eu des problèmes en pointant vers mon code de complément personnalisé.
Pour que les boutons fonctionnent avec vos macros personnalisées, configurez la macro dans vos sous-marins .xlam pour qu'elle soit appelée comme décrit dans cette réponse SO - Appel d'une macro Excel à partir du ruban . En gros, vous devrez ajouter ce paramètre "control As IRibbonControl" à n'importe quel module pointé depuis votre ruban xml. En outre, votre ruban xml doit avoir la syntaxe onAction = "myaddin! Mymodule.mysub" pour appeler correctement tous les modules chargés par le complément.
En utilisant ces instructions, j'ai pu créer un add-in Excel (fichier .xlam) qui a un onglet personnalisé chargé lorsque mon VBA est chargé dans Excel avec le complément. Les boutons exécutent le code du complément et l'onglet personnalisé se désinstalle lorsque Je supprime le complément.
la source
En plus de la réponse de Roi-Kyi Bryant, ce code fonctionne entièrement dans Excel 2010. Appuyez sur ALT + F11 et l'éditeur VBA apparaîtra. Double-cliquez sur
ThisWorkbook
sur le côté gauche, puis collez ce code:N'oubliez pas d'enregistrer et de rouvrir le classeur. J'espère que cela t'aides!
la source
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 ..xlam
fichiers,Chart Tools.xlam
etPriveleged UDFs.xlam
, pour montrer comment plusieurs compléments peuvent interagir avec le ruban.customUI
et_rels
.customUI
dossier, créez uncustomUI.xml
fichier. LecustomUI.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 ducustomUI.xml
fichier.Mon
customUI.xml
fichier pourChart Tools.xlam
ressemble à ceciMon
customUI.xml
fichier pourPriveleged UDFs.xlam
ressemble à ceci.zip
à leur nom de fichier. Dans mon cas, j'ai renomméChart Tools.xlam
enChart Tools.xlam.zip
etPrivelged UDFs.xlam
enPriveleged UDFs.xlam.zip
..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 MicrosoftMon
.rels
fichier pourChart Tools.xlam
ressemble à ceciMon
.rels
fichier pourPriveleged UDFs
ressemble à ceci..rels
fichiers de chaque.zip
fichier par le.rels
/ les fichiers que vous avez modifiés à l'étape précédente..customUI
dossier que vous avez créé dans le répertoire de base du.zip
fichier / fichiers..zip
extension de fichier des fichiers Excel que vous avez créés ..xlam
fichiers, de retour dans Excel, ajoutez-les à vos compléments Excel.onAction
mots - clés dans mes boutons. LeonAction
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 leonAction
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 pourChart Tools.xlam
ressemble àMon
CallBacks
module pourPriveleged UDFs.xlam
ressemble àOption explicite
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
idQ
etxlmns:
. Dans mon exemple, lesChart Tools.xlam
et lesPriveleged UDFs.xlam
deux ont accès aux éléments avecidQ
un égal àx:chartToolsTab
etx: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 moncustomUI.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.isMSO
mot - clé. La section Deux façons de personnaliser l'interface utilisateur Fluent dans le guide Microsoft donne plus de détails.la source
Une autre approche consiste à télécharger le module de classe Open XML gratuit de Jan Karel Pieterse à partir de cette page: Modification d'éléments dans un fichier OpenXML à l'aide de VBA
Avec cela ajouté à votre projet VBA, vous pouvez décompresser le fichier Excel, utiliser VBA pour modifier le XML, puis utiliser la classe pour rezip les fichiers.
la source