Comment puis-je masquer et afficher tous les onglets de ruban Excel standard à l'aide de VBA (et non de XML). Je ne veux pas cacher tout le ruban (comme on le demande ici: VBA minimiser le ruban dans Excel ) uniquement les onglets. Je sais comment utiliser startFromScratch en utilisant XML, veuillez donc ne pas suggérer cela ni d'autres solutions XML.
Jusqu'à présent, j'ai effectué une recherche approfondie sur Google et examiné:
Ce que je dis, c'est que j'ai déjà fait une recherche approfondie et essayé beaucoup de choses sans obtenir de résultat.
Comment masquer et afficher tous les onglets de ruban Excel standard à l'aide de VBA (et non de XML)
La réponse est " VOUS NE POUVEZ PAS ".
Autant que je sache, vous ne pouvez pas faire cela en utilisant VBA. Malheureusement, VBA n'expose pas les onglets. Les seules options que vous avez sont comme indiqué dans l'image ci-dessous
Donc, vous pouvez travailler avec la barre de commande, commandbarButton, commandbarComboBox etc ...
Vous pouvez dire que Set cbar = Application.CommandBars("Ribbon")
mais après cela, le problème que vous allez rencontrer est de savoir comment obtenir une poignée pour les onglets.
Ce que vous pouvez faire avec le ruban sous VBA:
Ce que vous ne pouvez pas faire avec le ruban avec VBA:
Vous pouvez cependant utiliser XML pour réaliser ce que vous voulez. Par exemple
<customUI xmlns="http://schemas.Microsoft.com/office/2006/01/customui">
<ribbon>
<tabs>
<tab idMso="TabReview" visible="false" />
</tabs>
</ribbon>
</customUI>
Mais je suppose que vous ne voulez pas utiliser la route XML.
Vous pouvez en effet masquer/afficher des rubans à l’aide de VBA. Voici un exemple:
<ribbon startFromScratch="false">
<tabs>
<!-- Excel BUILT-IN TABS -->
<tab idMso="TabDeveloper" getVisible="GetVisible">
<group idMso="GroupCode" visible="true"/>
<group idMso="GroupAddins" visible="true"/>
<group idMso="GroupControls" visible="true"/>
<group idMso="GroupXml" visible="true"/>
<group idMso="GroupModify" visible="true"/>
</tab>
</tabs>
</ribbon>
Configurez votre fichier XML.
Configurez votre script VBA.
Sub GetVisible(control As IRibbonControl, ByRef MakeVisible)
Select Case control.ID
Case "TabDeveloper": MakeVisible = True
Case "TabHome": MakeVisible = True
Case "TabInsert": MakeVisible = True
Case "TabPageLayoutExcel": MakeVisible = True
Case "TabFormulas": MakeVisible = True
Case "TabData": MakeVisible = True
Case "TabReview": MakeVisible = True
Case "TabView": MakeVisible = True
Case "TabAddIns": MakeVisible = True
Case "TabBackgroundRemoval": MakeVisible = True
End Sub
Conseil: assurez-vous de fermer votre classeur Excel contenant le ruban que vous modifiez avant de modifier le fichier de ruban XML. J'ai constaté que cela efface parfois mon code VBA (je ne sais pas pourquoi, c'est le cas).
Activer un onglet particulier
Dans Microsoft Office 2010, vous activez un onglet personnalisé à l'aide de la méthode ActivateTab de l'objet IRibbonUI.
Vous utilisez la méthode ActivateTabMso Pour les onglets intégrés et ActivateTabQ pour les onglets partagés entre plusieurs additifs .
ActivateTabQ nécessite également un paramètre supplémentaire de type String qui spécifie l'espace de nom du complément.
En XML, spécifiez
customUI onLoad="RibbonOnLoad" xmlns=etc
En VBA
Public gRibbonUI As IRibbonUI
Sub RibbonOnLoad(ribbon As IRibbonUI)
Set gRibbonUI = ribbon
End Sub
Puis en code
gRibbonUI.ActivateTab "MyTabID"
gRibbonUI.ActivateTabMso "TabHome"
Tout d’abord, ouvrez la feuille Excel sur laquelle vous souhaitez masquer l’onglet du ruban, puis appuyez sur Alt+F11. Insérer un nouveau module de code et ajouter le code suivant:
Private Sub hide()
Application.ExecuteExcel4Macro "Show.ToolBar(""Ribbon"",False)
End sub
Vous pouvez utiliser sur le XML comme ceci:
<ruban startFromScratch = "true">
vérifier ce lien:
Essayez ce XML pour Excel que j'ai testé:
<customUI xmlns="http://schemas.Microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<tab idMso="TabHome" visible="false" />
<tab idMso="TabInsert" visible="false" />
<tab idMso="TabFormulas" visible="false" />
<tab idMso="TabData" visible="false" />
<tab idMso="TabReview" visible="false" />
<tab idMso="TabView" visible="false" />
<tab idMso="TabDeveloper" visible="false" />
</tabs>
</ribbon>
</customUI>