11

如何使用 VBA(不是 XML)隐藏和显示所有标准 Excel 功能区选项卡。我不想隐藏整个功能区(如此处所问:VBA 最小化 Excel 中的功能区)只是选项卡。我知道如何使用 XML 来使用 startFromScratch,所以请不要建议使用该方法或其他 XML 解决方案。

到目前为止,我已经进行了广泛的谷歌搜索并查看了:

我的意思是我已经进行了广泛的搜索并尝试了很多事情但没有得到结果。

4

6 回答 6

11

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

答案是“你不能”。

AFAIK,你不能用 VBA 做到这一点。不幸的是,VBA 不公开选项卡。您拥有的唯一选项如下图所示

在此处输入图像描述

因此,您可以使用命令栏、命令栏按钮、命令栏组合框等...

你可以这么说,Set cbar = Application.CommandBars("Ribbon")但在那之后,你将面临的问题是如何获得选项卡的句柄。

您可以使用 VBA 对功能区执行以下操作:

  • 确定特定控件是否启用/可见/按下(Toggleboxes/CheckBoxes)
  • 获取控件的标签、屏幕提示或超级提示 显示与控件关联的图像。
  • 执行特定的控制。

使用 VBA 无法对功能区执行的操作:

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

但是,您可以使用 XML 来实现您想要的。例如

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

但我猜你不想通过 XML Route。

于 2013-11-14T05:13:48.033 回答
8

您确实可以使用 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 的控制 ID 列表。 http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=6627

提示:在编辑 XML 功能区文件之前,请务必关闭包含您正在编辑的功能区的 Excel 工作簿。我发现它有时会删除我的 VBA 代码(我不知道为什么,它就是这样)。

于 2016-07-21T14:55:12.447 回答
4

激活特定选项卡

在 Microsoft Office 2010 中,您可以使用 IRibbonUI 对象的 ActivateTab 方法激活自定义选项卡

对内置选项卡使用 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"
于 2014-03-25T09:29:08.323 回答
3

首先,打开要隐藏功能区选项卡的 Excel 工作表,然后按Alt+ F11。插入新的代码模块并添加以下代码:

Private Sub hide()
    Application.ExecuteExcel4Macro "Show.ToolBar(""Ribbon"",False)
End sub
于 2014-12-24T18:50:38.930 回答
1

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

< 功能区 startFromScratch="true" >

检查此链接:

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

于 2014-09-29T19:02:06.937 回答
1

试试我测试过的这个 XML for 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

于 2016-11-25T01:36:37.653 回答