Excel Скрыть / Показать все вкладки на ленте, кроме настраиваемой вкладки
Как я могу скрыть и показать все стандартные вкладки ленты Excel, используя VBA (не XML). Я не хочу скрывать всю ленту (как здесь просят: VBA свернуть ленту в Excel) только вкладки. Я знаю, как использовать startFromScratch с использованием XML, поэтому, пожалуйста, не предлагайте те или иные решения XML.
До сих пор я сделал обширный поиск Google и посмотрел на:
- http://msdn.microsoft.com/en-us/library/office/ee390805(v=office.11).aspx
- http://msdn.microsoft.com/en-us/library/microsoft.office.tools.ribbon.officeribbon.startfromscratch.aspx?cs-save-lang=1&cs-lang=vb
- Настройка ленты с VBA в Excel
- Показать ленту Excel 2007 в файле XLS с помощью Excel VBA
- Показать ленту Excel 2007 в файле XLS с помощью Excel VBA
- Руководство по графическому интерфейсу ленты
- Макет ленты Excel CustomUI
- http://www.rondebruin.nl/win/s2/win012.htm
То, что я говорю, я уже сделал обширный поиск и перепробовал много вещей, не получая результата.
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>
Настройте свой XML-файл.
Настройте свой 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
- Загрузите этот файл для получения списка идентификаторов элементов управления для 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, как это:
проверьте эту ссылку:
Попробуйте этот 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>