Excel隐藏/显示function区上除自定义选项卡外的所有选项卡

如何使用VBA(而非XML)隐藏和显示所有标准Excelfunction区选项卡。 我不想隐藏整个function区(就像这里问的: VBA在Excel中最小化function区 )只是选项卡。 我知道如何使用XML的startFromScratch,所以请不要暗示或其他的XML解决scheme。

到目前为止,我已经做了广泛的谷歌search,并看着:

  • 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
  • 在Excel中使用VBA自定义function区
  • 使用Excel VBA在XLS文件中显示Excel 2007function区
  • 使用Excel VBA在XLS文件中显示Excel 2007function区
  • function区GUI指南
  • Excel CustomUIfunction区布局
  • http://www.rondebruin.nl/win/s2/win012.htm

我所说的是我已经做了大量的search,并且尝试了很多东西而没有得到结果。

如何使用VBA(不是XML)隐藏和显示所有标准Excelfunction区选项卡?

答案是“ 你不能 ”。

AFAIK,你不能这样做使用VBA。 不幸的是VBA不公开这些标签。 您所拥有的唯一选项如下图所示

在这里输入图像说明

所以你可以使用命令栏,commandbarButton,commandbarComboBox等…

你可以说Set cbar = Application.CommandBars("Ribbon")但之后,你将面临的问题是如何获得标签的句柄。

您可以使用VBA使用function区做什么:

  • 确定是否一个特定的控件是启用/可见/按下(切换框/checkbox)
  • 获取控件的标签,屏幕提示或超级用户界面显示与控件关联的图像。
  • 执行一个特定的控制。

使用VBA的function区无法做什么:

  • 确定当前select哪个选项卡。
  • 激活特定的选项卡。
  • 隐藏特定的选项卡
  • 添加一个新标签。
  • 添加一个新的组到一个标签。
  • 添加一个新的控件。
  • 删除/禁用/隐藏控件。

但是,你可以使用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> 

激活特定的选项卡

在Microsoft Office 2010中,通过使用IRibbonUI对象的ActivateTab方法来激活自定义选项卡

对于内置的选项卡使用ActivateTabMso方法,对于多个加载项共享的选项卡使用ActivateTabQ。

ActivateTabQ还需要额外的Stringtypes参数来指定加载项的名称空间

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

首先,打开要隐藏function区选项卡的Excel工作表,然后按Alt + 11 。 在工作表中,您可以编写以下代码:

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

你可以像这样在XML上使用:

<ribbon startFromScratch =“true”>

检查这个链接:

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

尝试这个XML的Excel我已经testing:

 <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