You might be over complicating it
Option Explicit
Public bShowHomeTab As Boolean
Public oRibbon As IRibbonUI
'Callback for customUI.onLoad
Sub SaveRibbon(ribbon As IRibbonUI)
Set oRibbon = ribbon
bShowHomeTab = True
oRibbon.Invalidate
End Sub
'Callback for TabHome getVisible
Sub ShowHome(control As IRibbonControl, ByRef returnedVal)
returnedVal = bShowHomeTab
End Sub
Sub ToggleShowingHome()
bShowHomeTab = Not bShowHomeTab
oRibbon.Invalidate
End Sub
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"onLoad="SaveRibbon">
<!-- **************************************************************************-->
<!-- **********Set visible to false for tabs or groups on the ribbon***********-->
<!-- **************************************************************************-->
<!-- **********You can find the Tab and Group names on this page***************-->
<!-- **************http://www.rondebruin.nl/xmlribbongroups.htm****************-->
<!-- **************************************************************************-->
<!-- ****************Or in one of the downloads on this page*******************-->
<!-- *****************http://www.rondebruin.nl/ribbon.htm**********************-->
<!-- **************************************************************************-->
<ribbon>
<tabs>
<!-- Set visible to false for the Font group on the Home tab-->
<tab idMso="TabHome" getVisible="ShowHome">
</tab>
</tabs>
</ribbon>
</customUI>
With Home hidden (in this simple example, and opening a second WB the second WB's ribbon is 'normal'