Excel Скрыть / Показать все вкладки на ленте, кроме пользовательской вкладки
Как я могу скрыть и показать все стандартные вкладки ленты Excel с помощью VBA (не XML). Я не хочу скрывать всю ленту (как здесь спрашивается:VBA свернуть ленту В Excel) просто вкладки. Я знаю, как использовать startFromScratch с помощью XML, поэтому, пожалуйста, не предлагайте это или другие решения XML.
до сих пор я сделал обширный поиск Google и посмотрел at:
- 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#code-snippet-1
- Настройка ленты с VBA в Excel
- показать ленту Excel 2007 в файле XLS с помощью Excel VBA
- Показать Excel 2007 Лента в файле XLS с использованием Excel VBA
- руководство GUI ленты
- Excel CustomUI ленты макет
- http://www.rondebruin.nl/win/s2/win012.htm
Я говорю, что я уже сделал обширный поиск и пробовал много вещей, не получая результата.
6 ответов
как я могу скрыть и показать все стандартные вкладки ленты Excel с помощью VBA (не XML)
ответ "ВЫ НЕ МОЖЕТЕ".
AFAIK, вы не можете сделать это с помощью VBA. К сожалению, VBA не предоставляет вкладки. Единственные параметры, которые у вас есть, как показано на рисунке ниже
таким образом, вы можете работать с commandbar, commandbarButton, commandbarComboBox и т. д...
вы можете сказать, что Set cbar = Application.CommandBars("Ribbon")
но после этого проблема, с которой вы столкнетесь, заключается в том, как получить дескриптор для вкладок.
что вы можете сделать с лентой, используя VBA:
- определить, является ли конкретный элемент управления включен,/видимый/нажата(Toggleboxes/флажки)
- получить метку элемента управления, подсказку экрана или подсказку отображения изображения, связанного с управление.
- выполнить определенный контроль.
что вы не можете сделать с лента с использованием 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
Совет: перед редактированием файла XML-ленты закройте книгу Excel, содержащую редактируемую ленту. Я обнаружил, что иногда он стирает мой код VBA (я не знаю, почему, он просто делает).
для активации определенной вкладки
в Microsoft Office 2010 можно активировать пользовательскую вкладку с помощью Метод ActivateTab объекта IRibbonUI
вы используете ActivateTabMso способ встроенных вкладок и ActivateTabQ для вкладок, совместно используемых несколько надстроек.
ActivateTabQ также требует дополнительного Параметр строкового типа, указывающий пространство имен надстройки
в 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 для 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>