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 не предоставляет вкладки. Единственные параметры, которые у вас есть, как показано на рисунке ниже

enter image description here

таким образом, вы можете работать с 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>
  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

Совет: перед редактированием файла 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, как это:

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

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 Code

результат:
ExcelApp