在Ribbon上隐藏/显示除自定义选项卡之外的所有选项卡

11
如何使用VBA(非XML)隐藏和显示所有标准的Excel功能区选项卡。我不想隐藏整个功能区(如此处所问:在Excel中最小化功能区的VBA),只是选项卡。我知道如何使用XML中的startFromScratch,因此请不要建议那种或其他XML解决方案。
到目前为止,我进行了广泛的谷歌搜索并查看了以下内容:
  • http://www.rondebruin.nl/win/s2/win012.htm
  • 我的意思是我已经进行了广泛的搜索并尝试了许多方法,但没有得到结果。


    我真的希望是这样。不幸的是,作为我的谷歌搜索的一部分,我已经访问过那个页面了。感谢您的尝试@PortlandRunner。 - Brett
    你需要使用XML来自定义功能区。你可以将默认选项隐藏,只需要知道内置选项卡的名称。例如,隐藏“主页”选项卡:<tabs> <tab idMso="TabHome" visible="false" /> </tabs> - PatricK
    @PatricK,您是在说我的自定义功能区选项卡的 XML 可以隐藏默认的功能区选项卡吗? - johny why
    6个回答

    11
    无法用VBA隐藏和显示所有标准Excel功能区选项卡(不使用XML)。据我所知,使用VBA无法实现这一点。不幸的是,VBA不公开选项卡。您唯一可以使用的选项如下图所示:所以您可以使用commandbar、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路径。


    9

    您确实可以使用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脚本。 子 GetVisible(control As IRibbonControl, ByRef MakeVisible) 选择控件.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 结束选择 结束子程序

    3. 下载此文件以获取MS Office的控件ID列表。 http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=6627

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


    4

    激活特定选项卡

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

    对于内置选项卡,您可以使用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"
    

    3

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

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

    我认为你对键盘快捷键有误。 - JasonMArcher

    1
    尝试使用我已经测试过的这个用于Excel的XML:
    <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

    1

    1
    谢谢您的回答,但我特别说了“我知道如何使用XML来使用startFromScratch,请不要建议这样做”。请在将来仔细阅读问题。 - Brett

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接