Excel Hide/Show all tabs on Ribbon except custom tab

萝らか妹 提交于 2019-11-27 21:32:33

How can I hide and show all the standard Excel ribbon tabs using VBA (not XML)

The answer is "YOU CAN'T".

AFAIK, you can't do that using VBA. Unfortunately VBA doesn't expose the tabs. The only options that you have are as shown in the image below

So you can work with the commandbar, commandbarButton, commandbarComboBox etc...

You can say that Set cbar = Application.CommandBars("Ribbon") but after that, the problem that you will face is how to get a handle for the tabs.

What you can do with the Ribbon using VBA:

  • Determine whether a particular control is Enabled/Visible/Pressed(Toggleboxes/CheckBoxes)
  • Get a control's label, screen tip, or supertip Display the image associated with a control.
  • Execute a particular control.

What you can't do with the Ribbon using VBA:

  • Determine which tab is currently selected.
  • Activate a particular tab.
  • Hide a particular tab
  • Add a new tab.
  • Add a new group to a tab.
  • Add a new control.
  • Remove/Disable/Hide a control.

You can however use XML to achieve what you want. For example

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

But I guess you do not want to go via the XML Route.

You can indeed hide/show ribbons using VBA. Here is an example:

<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. Setup your XML file.

  2. Setup your VBA script. 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. Download this file for a list of Control IDs for MS Office. http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=6627

Tip: Be sure to close your Excel Workbook that includes the ribbon you are editing before editing the XML ribbon file. I have found that it sometimes erases my VBA code (I don't know why, it just does).

sysmod

To Activate a particular tab

In Microsoft Office 2010, you activate a custom tab by using the ActivateTab method of the IRibbonUI object

You use the ActivateTabMso method for built-in tabs and ActivateTabQ for tabs shared between multiple add-ins.

ActivateTabQ also requires an additional String-type parameter that specifies the namespace of the add-in

In XML specify

customUI onLoad="RibbonOnLoad" xmlns=etc

In VBA

Public gRibbonUI As IRibbonUI 

Sub RibbonOnLoad(ribbon As IRibbonUI)

   Set gRibbonUI = ribbon

End Sub

Then in code

gRibbonUI.ActivateTab "MyTabID"

gRibbonUI.ActivateTabMso "TabHome"
Seshadri

First, open the Excel sheet which you want hide the ribbon tab on, then press Alt+F11. Insert new code module and add following code:

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

You can use on the XML like these:

< ribbon startFromScratch="true" >

check this link:

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

Try this XML for Excel I have tested:

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

Result:

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!