Excel Скрыть / Показать все вкладки на ленте, кроме настраиваемой вкладки

Как я могу скрыть и показать все стандартные вкладки ленты Excel, используя VBA (не XML). Я не хочу скрывать всю ленту (как здесь просят: VBA свернуть ленту в Excel) только вкладки. Я знаю, как использовать startFromScratch с использованием XML, поэтому, пожалуйста, не предлагайте те или иные решения XML.

До сих пор я сделал обширный поиск Google и посмотрел на:

То, что я говорю, я уже сделал обширный поиск и перепробовал много вещей, не получая результата.

6 ответов

Решение

Как я могу скрыть и показать все стандартные вкладки ленты Excel, используя VBA (не XML)

Ответ "ВЫ НЕ МОЖЕТЕ".

AFAIK, вы не можете сделать это с помощью VBA. К сожалению, VBA не предоставляет вкладки. Единственные варианты, которые у вас есть, как показано на рисунке ниже

Таким образом, вы можете работать с панелью команд, commandbarButton, commandbarComboBox и т.д...

Вы можете сказать, что Set cbar = Application.CommandBars("Ribbon") но после этого проблема, с которой вы столкнетесь, заключается в том, как получить ручку для вкладок.

Что вы можете сделать с помощью ленты VBA:

  • Определите, включен ли конкретный элемент управления / видимый / нажатый (переключатели / флажки)
  • Получить метку элемента управления, подсказку на экране или всплывающую подсказку Отображение изображения, связанного с элементом управления.
  • Выполнить определенный контроль.

Что вы не можете сделать с помощью ленты VBA:

  • Определите, какая вкладка выбрана в данный момент.
  • Активировать определенную вкладку.
  • Скрыть конкретную вкладку
  • Добавить новую вкладку.
  • Добавить новую группу на вкладку.
  • Добавить новый элемент управления.
  • Удалить / отключить / скрыть элемент управления.

Однако вы можете использовать XML для достижения того, что вы хотите. Например

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
    <ribbon>
        <tabs>
            <tab idMso="TabReview" visible="false" />
        </tabs>
    </ribbon>
</customUI>

Но я думаю, вы не хотите идти по XML-маршруту.

Вы действительно можете скрыть / показать ленты, используя VBA. Вот пример:

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

  1. Настройте свой XML-файл.

  2. Настройте свой 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

  3. Загрузите этот файл для получения списка идентификаторов элементов управления для MS Office. http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=6627

Совет: Обязательно закройте свою книгу Excel, которая содержит ленту, которую вы редактируете, перед редактированием файла ленты XML. Я обнаружил, что он иногда стирает мой код VBA (я не знаю почему, он просто делает).

Активировать определенную вкладку

В Microsoft Office 2010 пользователь активирует пользовательскую вкладку с помощью метода ActivateTab объекта IRibbonUI.

Вы используете метод ActivateTabMso для встроенных вкладок и ActivateTabQ для вкладок, совместно используемых несколькими надстройками.

ActivateTabQ также требует дополнительный параметр типа String, который указывает пространство имен надстройки

В XML укажите

customUI onLoad="RibbonOnLoad" xmlns=etc

В VBA

Public gRibbonUI As IRibbonUI 

Sub RibbonOnLoad(ribbon As IRibbonUI)

   Set gRibbonUI = ribbon

End Sub

Тогда в коде

gRibbonUI.ActivateTab "MyTabID"

gRibbonUI.ActivateTabMso "TabHome"

Сначала откройте лист Excel, на котором вы хотите скрыть вкладку ленты, затем нажмите Alt+F11. Вставьте новый модуль кода и добавьте следующий код:

Private Sub hide()
    Application.ExecuteExcel4Macro "Show.ToolBar(""Ribbon"",False)
End sub

Вы можете использовать на XML, как это:

проверьте эту ссылку:

http://www.rondebruin.nl/win/s2/win012.htm

Попробуйте этот XML для Excel, который я протестировал:

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

XML-код

Результат:
ExcelApp

Другие вопросы по тегам