I can’t see that anyone else has brought this up… This isn’t a workaround, this is the actual idMSO for what I think you’re looking for. This code makes my excel window look like everything is gone the same way the first option does for Auto-Hide Ribbon
.
Before the code runs, my window looks like this, in the ‘Restore’ size:
Running the following code:
Sub HideTheRibbon()
CommandBars.ExecuteMso "HideRibbon"
End Sub
Will make your window look like this, in the maxamized window size (just like what would happen if you were to press the Auto-Hide Ribbon
button manually):
If you want the ribbon automatically hidden when the workbook opens, put this in the workbook code:
Sub Workbook_Open()
CommandBars.ExecuteMso "HideRibbon"
End Sub
Alternatively, to achieve the same thing, you could put this code in a module:
Sub Auto_Open()
CommandBars.ExecuteMso "HideRibbon"
End Sub
If you want the window to revert back to normal, you run the exact same code again. In other words, the following code would make no visual change at all when ran because the idMSO «HideRibbon» is a toggleButton:
Sub HideTheRibbon()
CommandBars.ExecuteMso "HideRibbon"
CommandBars.ExecuteMso "HideRibbon"
End Sub
If you want a full list of all the idMSO in excel, click the following that apply to you: Excel 2013+, Excel 2010, Excel 2007
Как скрыть панели инструментов Excel 2003 и ленту Excel 2007 при помощи макроса на VBA
Чтобы убрать с экрана все лишние элементы интерфейса Excel, можно выспользоваться таким кодом:
(скрываются все панели инструментов в Excel 2003 и лента в Excel 2007; скрываются ярлычки листов, линейки и полосы прокрутки; изменяется название окна приложения)
При необходимости можно отображать нужную панели инструментов, в то время, как остальные панели будут скрыты)
Private Sub ChangeInterface(Value As Boolean) With Application .ScreenUpdating = False .Caption = IIf(Value = True, Empty, "Наше окно") .DisplayStatusBar = Value: .DisplayFormulaBar = Value Dim iCommandBar As CommandBar For Each iCommandBar In .CommandBars iCommandBar.Enabled = Value Next With .ActiveWindow .Caption = IIf(Value = True, .Parent.Name, "") .DisplayHeadings = Value: .DisplayGridlines = Value .DisplayHorizontalScrollBar = Value: .DisplayVerticalScrollBar = Value .DisplayWorkbookTabs = Value End With .ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"", " & Value & ")" .ScreenUpdating = True End With End Sub Private Sub УбратьВсё() ChangeInterface False End Sub Private Sub ВосстановитьИнтерфейс() ChangeInterface True End Sub
Чтобы скрывать панели инструментов Excel 2003 и ленту Excel 2007 только для одной книги,
поместите в модуль ЭтаКнига следующий код:
(при переключении на другой файл интерфейс Excel будет восстанавливаться)
Private Sub Workbook_Open() ' открытие книги УбратьВсё End Sub Private Sub Workbook_Activate() ' возврат на эту книгу из другой УбратьВсё End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) ' закрытие книги ВосстановитьИнтерфейс End Sub Private Sub Workbook_Deactivate() ' переключение на другую книгу ВосстановитьИнтерфейс End Sub
См. пример в прикреплённом файле:
- 39154 просмотра
Не получается применить макрос? Не удаётся изменить код под свои нужды?
Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.
I want to minimize the ribbon in Excel 2013 with VBA. I do not want to toggle the ribbon, and I do not want to hide everything including «File», «Insert», etc. I have tried several different methods, but none satisfy what I want.
This hides everything:
Application.ExecuteExcel4Macro "Show.ToolBar(""Ribbon"",False)
This toggles:
CommandBars.ExecuteMso "MinimizeRibbon"
This also toggles:
SendKeys "^{F1}"
How can I simply force my ribbon to be minimized?
asked Sep 26, 2013 at 4:42
4
Measure Ribbon height, toggle it, measure again and if taller, re-toggle. Best also to set Application.Screenupdating = false.
ht1 = Application.CommandBars("Ribbon").Height
SendKeys "^{F1}", False
DoEvents
ht2 = Application.CommandBars("Ribbon").Height
If ht2 > ht1 Then SendKeys "^{F1}", False
And I do hate it when folk question why you want to do what you want. I have a Dictator App and need 100% control over the interaction with Excel.
answered Aug 10, 2014 at 15:11
LawrieMLawrieM
911 silver badge1 bronze badge
Not sure when you are trying to call this but this will work to minimize the ribbon if its open
If Application.CommandBars("Ribbon").Height >= 150 Then
SendKeys "^{F1}"
End If
Open Ribbon minimum size seems to be 150 so this will only toggle if it’s open
answered Sep 26, 2013 at 19:31
engineersmnkyengineersmnky
24.8k2 gold badges36 silver badges51 bronze badges
3
Provided no-one else is messing with the settings (and if everyone did what I’m to suggest it would be great), if you retoggle ribbon minimise before close, it will always be there on open so it CAN be minimised. Just make sure to manually hide the ribbon before exiting this one time, then is will always hide on open.
Private Sub Workbook_Open()
Application.DisplayFormulaBar = False
Application.CommandBars.ExecuteMso "MinimizeRibbon"
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayFormulaBar = True
Application.CommandBars.ExecuteMso "MinimizeRibbon"
End Sub
David Buck
3,69335 gold badges33 silver badges35 bronze badges
answered May 6, 2020 at 11:08
If you want this to be hidden completely as soon as the workbook is opened then add this to the workbook code:
Private Sub Workbook_Open()
Application.ExecuteExcel4Macro "show.toolbar(""Ribbon"",False)"
End Sub
answered Apr 14, 2014 at 13:41
1
How can I hide and show all the standard Excel ribbon tabs using VBA (not XML)
The answer is «YOU CAN’T«.
AFAIK, you can’t do that using VBA. Unfortunately VBA doesn’t expose the tabs. The only options that you have are as shown in the image below
So you can work with the commandbar, commandbarButton, commandbarComboBox etc…
You can say that Set cbar = Application.CommandBars("Ribbon")
but after that, the problem that you will face is how to get a handle for the tabs.
What you can do with the Ribbon using VBA:
- Determine whether a particular control is Enabled/Visible/Pressed(Toggleboxes/CheckBoxes)
- Get a control’s label, screen tip, or supertip Display the image associated with a
control. - Execute a particular control.
What you can’t do with the Ribbon using VBA:
- Determine which tab is currently selected.
- Activate a particular tab.
- Hide a particular tab
- Add a new tab.
- Add a new group to a tab.
- Add a new control.
- Remove/Disable/Hide a control.
You can however use XML to achieve what you want. For example
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
<tabs>
<tab idMso="TabReview" visible="false" />
</tabs>
</ribbon>
</customUI>
But I guess you do not want to go via the XML Route.
Как Auto-hide Ribbon
в Excel 2013 в VBA? Я хотел бы добиться именно того, что получаю, щелкнув значок верхней стрелки в правой верхней части меню Excel, отмеченного синим на рисунке ниже, а затем щелкнув первый параметр, помеченный оранжевым:
Я также был бы заинтересован в переключении VBA на третий вариант Show Tabs and Commands
, Для меня важно сохранить в меню Excel значок верхней стрелки (отмечен синим цветом).
Я пробовал подсказки, показанные в этой теме: VBA свернуть ленту в Excel, но я не удовлетворен результатами.
Попытка 1
Application.ExecuteExcel4Macro "Show.ToolBar(""Ribbon"",False)
Это хорошо, но скрывает синий значок.
Попытка 2
CommandBars.ExecuteMso "MinimizeRibbon"
Это близко к тому, что я хочу. Это сохраняет синий значок, но не скрывает все меню. Он переключается на второй вариант, отображаемый на картинке Show Tabs
,
Попытка 3
SendKeys "^{F1}"
Преступление не работает вообще. Более того, он должен имитировать попытку 2. Так что даже это не удовлетворило бы меня.
2016-08-29 08:31
7
ответов
Решение
Я не вижу, чтобы кто-то еще поднял этот вопрос… Это не обходной путь, это фактический idMSO для того, что, я думаю, вы ищете. Этот код заставляет мое окно Excel выглядеть так, как будто все прошло так же, как первый вариант для Auto-Hide Ribbon
,
Перед запуском кода мое окно выглядит примерно так: размер «Восстановить»:
Выполнение следующего кода:
Sub HideTheRibbon()
CommandBars.ExecuteMso "HideRibbon"
End Sub
Сделает ваше окно похожим на это в максимизированном размере окна (точно так же, как если бы вы нажали Auto-Hide Ribbon
кнопка вручную):
Если вы хотите, чтобы лента автоматически скрывалась при открытии книги, вставьте ее в код книги:
Sub Workbook_Open()
CommandBars.ExecuteMso "HideRibbon"
End Sub
В качестве альтернативы, чтобы достичь того же, вы можете поместить этот код в модуль:
Sub Auto_Open()
CommandBars.ExecuteMso "HideRibbon"
End Sub
Если вы хотите, чтобы окно вернулось в нормальное состояние, вы снова запускаете тот же код. Другими словами, следующий код не будет делать никаких визуальных изменений при запуске, потому что idMSO «HideRibbon» является toggleButton:
Sub HideTheRibbon()
CommandBars.ExecuteMso "HideRibbon"
CommandBars.ExecuteMso "HideRibbon"
End Sub
Если вы хотите получить полный список всех idMSO в Excel, выберите следующее: Excel 2013+, Excel 2010, Excel 2007
2016-09-03 18:45
Я использую это в целях презентации
ActiveWindow.DisplayGridlines = False
ActiveWindow.DisplayHeadings = False
Application.DisplayFormulaBar = False
Application.DisplayFullScreen = True Это то, что я использовал, чтобы скрыть ленту
2017-01-04 08:57
Возможно, вам следует сделать что-то более сложное:
использование CommandBars.ExecuteMso "MinimizeRibbon"
показать / скрыть ленту В зависимости от того, что вы хотите, вы можете показать / скрыть все другие вкладки на ленте. Например, используйте что-то из кода здесь -> Excel Скрыть / Показать все вкладки на ленте, кроме настраиваемой вкладки
Таким образом 2 шага:
Шаг 1 — показать или скрыть с помощью CommandBars.ExecuteMso
Шаг 2 — показать или скрыть остальные ссылки с некоторыми макросами по ссылке.
Немного большой обходной путь, но вы получите то, что хотите.
2016-08-31 11:15
Я вызываю этот макрос в Workbook_Open, чтобы проверить наличие ленты, и если она не скрыта, она скрывает ленту (на самом деле она находится в другом подпрограмме, которая также удаляет строку формул, строку состояния, заголовки и линии сетки в Workbook_Open)…
Sub HideRibbon()
If CommandBars("Ribbon").Controls(1).Height < 100 Then
Exit Sub
Else
CommandBars.ExecuteMso ("MinimizeRibbon")
End If
End Sub
Затем я вызываю этот макрос в Workbook_BeforeClose, чтобы проверить наличие ленты, и если она не отображается, она покажет ленту для следующей открытой таблицы Excel.
Sub ShowRibbon()
If CommandBars("Ribbon").Controls(1).Height > 100 Then
Exit Sub
Else
CommandBars.ExecuteMso ("MinimizeRibbon")
End If
End Sub
Это исключает возможность скрытия ленты, когда рабочая книга открыта, и пользователь затем вручную показывает ленту, которая, в свою очередь, перевернет показ при закрытии и фактически скроет ленту. При открытии лента будет показана снова. Это будет оставаться неизменным каждый раз при открытии и закрытии книги.
2017-06-07 12:50
Попробуйте это:
Sub ShowHideRibbon()
If CommandBars("Ribbon").Controls(1).Height < 100 Then
CommandBars.ExecuteMso ("MinimizeRibbon")
Else
CommandBars.ExecuteMso ("MinimizeRibbon")
End If
End Sub
Или это:
Sub ShowHideRibbon1()
If Application.ExecuteExcel4Macro("Get.ToolBar(7,""Ribbon"")") Then
Application.ExecuteExcel4Macro "Show.ToolBar(""Ribbon"", False)"
Else
Application.ExecuteExcel4Macro "Show.ToolBar(""Ribbon"", True)"
End If
End Sub
2016-09-02 02:30
Сначала перейдите в «Параметры Excel» и перейдите к «Панели быстрого действия».
Оттуда найдите «Скрыть ленту» и добавьте на панель инструментов. После того, как он находится в QAT, вы можете быстро вызвать его с помощью ALT+# (на моем компьютере это восьмая вещь, поэтому ALT+8 будет автоматически скрываться).
Затем просто добавьте подпрограмму, которая выполняет SendKeys ALT, затем 8:
Sub Macro1()
ActiveSheet.Activate
'Cells(1, 1).Select
SendKeys "%0", True
SendKeys "8", True
End Sub
Примечание: я знаю, что глупо иметь ActiveSheet.Activate
Я только что добавил это, чтобы проверить макрос. В зависимости от того, как он вызывается, вы можете удалить / закомментировать эту строку. %
эквивалентно ALT
и технически, я должен нажать 0, затем 8, отсюда две строки.
2016-08-31 16:52
Чтобы этот код работал в Excel 2016, вам потребуется следующий код в режиме «ThisWorkbook».
Кредит идет в BigBen — не я
Private Sub Workbook_Open()
application.CommandBars.ExecuteMso "HideRibbon"
End Sub
2018-10-30 16:16