I don't know how to post the excel workbook.
Here the VBA code:
Option Explicit
Dim Rib As IRibbonUI
Public MyTag As String
'Callback for customUI.onLoad
Sub RibbonOnLoad(ribbon As IRibbonUI)
Set Rib = ribbon
'If you want to run a macro below when you open the workbook
'you can call the macro like this :
Call EnableControlsWithCertainTag3
End Sub
Sub GetEnabledMacro(control As IRibbonControl, ByRef Enabled)
If MyTag = "Enable" Then
Enabled = True
Else
If control.Tag Like MyTag Then
Enabled = True
Else
Enabled = False
End If
End If
End Sub
Sub RefreshRibbon(Tag As String)
MyTag = Tag
If Rib Is Nothing Then
MsgBox "Error, Save/Restart your workbook" & vbNewLine & _
"Visit this page for a solution:
http://www.rondebruin.nl/ribbonstate.htm"
Else
Rib.Invalidate
End If
End Sub
'Note: Do not change the code above
Sub EnableControlsWithCertainTag1()
'Enable only the controls with a Tag that start with "G1"
Call RefreshRibbon(Tag:="G1*")
End Sub
Sub EnableControlsWithCertainTag2()
'Enable only the controls with a Tag that start with "Group2"
Call RefreshRibbon(Tag:="Group2*")
End Sub
Sub EnableControlsWithCertainTag3()
'Enable only the control with this Tag "Group1Button1"
Call RefreshRibbon(Tag:="G1B1")
End Sub
Sub EnableControlsWithCertainTag4()
'Enable only the controls with this Tag "Group?Button1"
'Note: you see that I use ? this can be any character (group 1 or 2 in this example)
'This example will enable the first button now in each group
Call RefreshRibbon(Tag:="Group?Button1")
End Sub
Sub EnabledAllControls()
'Enable all controls
Call RefreshRibbon(Tag:="*")
End Sub
Sub DisableAllControls()
'Disable all controls
Call RefreshRibbon(Tag:="")
End Sub
Here are the callbacks:
'Callback for customUI.onLoad
Sub RibbonOnLoad(ribbon As IRibbonUI)
End Sub
'Callback for G1B1 onAction
Sub Macro1(control As IRibbonControl)
End Sub
'Callback for G1B1 getEnabled
Sub GetEnabledMacro(control As IRibbonControl, ByRef returnedVal)
End Sub
'Callback for G1B2 onAction
Sub Macro2(control As IRibbonControl)
End Sub
'Callback for G1B3 onAction
Sub Macro3(control As IRibbonControl)
End Sub
'Callback for G2M1U1 onAction
Sub Macro4(control As IRibbonControl)
End Sub
'Callback for G2M1U2 onAction
Sub Macro5(control As IRibbonControl)
End Sub
'Callback for G3M1U3 onAction
Sub Macro6(control As IRibbonControl)
End Sub
'Callback for G2M2R1 onAction
Sub Macro7(control As IRibbonControl)
End Sub
'Callback for G2M2R2 onAction
Sub Macro8(control As IRibbonControl)
End Sub
'Callback for G2M2R3 onAction
Sub Macro9(control As IRibbonControl)
End Sub
'Callback for G2M3O1 onAction
Sub Macro10(control As IRibbonControl)
End Sub
'Callback for G2M3O2 onAction
Sub Macro11(control As IRibbonControl)
End Sub
'Callback for G2M3O3 onAction
Sub Macro12(control As IRibbonControl)
End Sub
'Callback for customUI.onLoad
Sub RibbonOnLoad(ribbon As IRibbonUI)
End Sub
'Callback for G1B1 onAction
Sub Macro1(control As IRibbonControl)
End Sub
'Callback for G1B1 getEnabled
Sub GetEnabledMacro(control As IRibbonControl, ByRef returnedVal)
End Sub
'Callback for G1B2 onAction
Sub Macro2(control As IRibbonControl)
End Sub
'Callback for G1B3 onAction
Sub Macro3(control As IRibbonControl)
End Sub
'Callback for G2M1U1 onAction
Sub Macro4(control As IRibbonControl)
End Sub
'Callback for G2M1U2 onAction
Sub Macro5(control As IRibbonControl)
End Sub
'Callback for G3M1U3 onAction
Sub Macro6(control As IRibbonControl)
End Sub
'Callback for G2M2R1 onAction
Sub Macro7(control As IRibbonControl)
End Sub
'Callback for G2M2R2 onAction
Sub Macro8(control As IRibbonControl)
End Sub
'Callback for G2M2R3 onAction
Sub Macro9(control As IRibbonControl)
End Sub
'Callback for G2M3O1 onAction
Sub Macro10(control As IRibbonControl)
End Sub
'Callback for G2M3O2 onAction
Sub Macro11(control As IRibbonControl)
End Sub
'Callback for G2M3O3 onAction
Sub Macro12(control As IRibbonControl)
End Sub
Here is the XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customUI onLoad="RibbonOnLoad" xmlns="
http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
<tabs>
<tab idMso="TabHome" >
<group id="MyCustomGroup1" label="Auditor" tag="MyPersonalGroup1" >
<button id="G1B1" label="FindJrnls" size="normal" onAction="Macro1" tag="G1B1" getEnabled="GetEnabledMacro"/>
<button id="G1B2" label="InitJrnls" size="normal" onAction="Macro2" tag="G1B2" getEnabled="GetEnabledMacro"/>
<button id="G1B3" label="PostJrnls" size="normal" onAction="Macro3" tag="G1B3" getEnabled="GetEnabledMacro"/>
</group>
<group id="MyCustomGroup2" label="Actions" tag="MyPersonalGroup2" >
<menu id="G2M1" label="Utilities" >
<button id="G2M1U1" label="Button U1" onAction="Macro4" getEnabled="GetEnabledMacro"/>
<button id="G2M1U2" label="Button U2" onAction="Macro5" getEnabled="GetEnabledMacro"/>
<button id="G3M1U3" label="Button U3" onAction="Macro6" getEnabled="GetEnabledMacro"/>
</menu>
<menu id="G2M2" label="Reports" >
<button id="G2M2R1" label="Button R1" onAction="Macro7" getEnabled="GetEnabledMacro"/>
<button id="G2M2R2" label="Button R2" onAction="Macro8" getEnabled="GetEnabledMacro"/>
<button id="G2M2R3" label="Button R3" onAction="Macro9" getEnabled="GetEnabledMacro"/>
</menu>
<menu id="G2M3" label="Other" >
<button id="G2M3O1" label="Button O1" onAction="Macro10" getEnabled="GetEnabledMacro"/>
<button id="G2M3O2" label="Button O2" onAction="Macro11" getEnabled="GetEnabledMacro"/>
<button id="G2M3O3" label="Button O3" onAction="Macro12" getEnabled="GetEnabledMacro"/>
</menu>
</group>
</tab>
</tabs>
</ribbon>
</customUI>