2013-09-26 11 views
7

Je veux réduire le ruban dans Excel 2013 avec VBA. Je ne veux pas faire basculer le ruban, et je ne veux pas cacher tout, y compris "Fichier", "Insérer", etc. J'ai essayé plusieurs méthodes différentes, mais aucune ne satisfait ce que je veux.VBA minimiser le ruban dans Excel

Ce cache tout:

Application.ExecuteExcel4Macro "Show.ToolBar(""Ribbon"",False) 

Ce Verrous:

CommandBars.ExecuteMso "MinimizeRibbon" 

Ce permet aussi de sélectionner:

SendKeys "^{F1}" 

Comment puis-je forcer simplement mon ruban à minimiser?

+1

Pourquoi voulez-vous confondre l'utilisateur? Laissez l'utilisateur décider si le ruban doit être visible ou non. – adrianm

+1

Où dit-on que l'utilisateur ne peut pas décider? Cliquez sur un bouton, exécutez une macro, décision prise. –

+0

qu'en est-il de 'Application.DisplayFullScreen = True' dans l'événement' Workbook_Open() '? –

Répondre

5

Je ne sais pas quand vous essayez d'appeler cela, mais cela fonctionnera pour minimiser le ruban si son ouverture

If Application.CommandBars("Ribbon").Height >= 150 Then 
    SendKeys "^{F1}" 
End If 

taille minimale du ruban ouvert semble être 150 si cela ne bascule si elle est ouverte

+0

Merci, c'est génial, mais je remarque que mon ruban a une hauteur de 147 lorsqu'il est ouvert et 61 lorsqu'il est fermé. Donc, j'ai mis mon seuil à 100. –

+1

sendkeys échouerait si lancé à partir d'un Userform parce que la feuille de calcul n'a pas le focus, donc soit utiliser Appactivate avant sendkeys, ou utiliser le code de la commande –

-3

Si vous voulez que cela soit caché complètement dès que le classeur est ouvert puis ajoutez ceci au code classeur:

Private Sub Workbook_Open() 
    Application.ExecuteExcel4Macro "show.toolbar(""Ribbon"",False)" 
End Sub 
+0

Il semble que l'OP a déjà essayé et était pas satisfait du résultat. –

4

Mesure de la hauteur du ruban, il bascule, mesure aga dans et si plus grand, re-basculer. Mieux vaut également définir Application.Screenupdating = false.

ht1 = Application.CommandBars("Ribbon").Height 
SendKeys "^{F1}", False 
DoEvents 
ht2 = Application.CommandBars("Ribbon").Height 
If ht2 > ht1 Then SendKeys "^{F1}", False 

Et je déteste quand folk question de savoir pourquoi vous voulez faire ce que vous voulez. J'ai une application Dictator et j'ai besoin de contrôle à 100% sur l'interaction avec Excel.