Как скрыть панели инструментов 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
См. пример в прикреплённом файле:
- 39157 просмотров
Не получается применить макрос? Не удаётся изменить код под свои нужды?
Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.
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
Формулировка задачи:
Скрываю все панели в книге Excel:
Вопрос: как отобразить только те панели, которые были отображены на момент их скрытия??
Код к задаче: «Excel (VBA) — Скрыть и отобразить панели инструментов ??»
textual
<font color="blue">Public</font> <font color="blue">Sub</font> RemoveMenuBar3()
<font color="blue">Dim</font> cb <font color="blue">As</font> CommandBar
<font color="blue">Set</font> cb = Application.CommandBars(<font color="teal">"Worksheet menu bar"</font>)
cb.Enabled = [b]True[/b]
<font color="blue">Set</font> cb = <font color="blue">Nothing</font>
<font color="blue">End</font> <font color="blue">Sub</font>[/quot]
Полезно ли:
14 голосов , оценка 4.286 из 5
|
Как скрыть панели инструментов и ленту Excel 2010 |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |






