Как скрыть ленту в excel vba

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:

enter image description here

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):

enter image description here

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

"Чиcтый" интерфейс Excel

Чтобы убрать с экрана все лишние элементы интерфейса 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

Kyle Weller's user avatar

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

LawrieM's user avatar

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

engineersmnky's user avatar

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's user avatar

David Buck

3,69335 gold badges33 silver badges35 bronze badges

answered May 6, 2020 at 11:08

XLhacks's user avatar

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

RJSK's user avatar

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

enter image description here

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

Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

  • Как скрыть курсор в word
  • Как скрыть диапазон ячеек excel
  • Как скрыть контекстное меню в excel
  • Как скрыть диапазон строк в excel
  • Как скрыть диапазон в vba excel

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии