Ukryj indywidualne niestandardowe przyciski wstążki

Mam niestandardową wstążkę Excela i dodatek Excel, który zawiera klasę, która jest tworzona raz podczas otwierania skoroszytu. W oparciu o niektóre atrybuty klasy muszę ukryć niektóre przyciski z niestandardowej wstążki (wszystko na tej samej karcie).

Moja niestandardowa wstążka to:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="loadCustom">
<ribbon>
<tabs>
<tab id="tab1" label="customTab" getVisible="GetVisible" tag="myTab">
<group id="grp1" label="Group1" imageMso="ViewFullScreenView" getVisible="GetVisible">
    <button id="Bt1" size="large" label="Button1" imageMso="AccessListIssues" onAction="runBt1" visible="true"/>
    <button id="Bt2" size="large" label="Button2" imageMso="AccessListTasks" onAction="runBt2" visible="true"/>
    <button id="Bt3" size="large" label="Button3" imageMso="ControlLayoutStacked" onAction="runBt3" visible="true"/>
    <button id="Bt4" size="large" label="Button4" imageMso="ControlLayoutTabular" onAction="runBt4" visible="true"/>

</group>
 </tab>
</tabs>
</ribbon>
</customUI>

Następnie mam następujące makra VBA w module, aby załadować niestandardową wstążkę i / lub ją wyłączyć:

Public Sub loadCustom(ribbon As IRibbonUI)

    Set RibUI = ribbon

    If workbookTitle = "myWorkbook" Then
        MyTag = "show"
    Else
        MyTag = False
        RefreshRibbon MyTag
    End If

End Sub

Sub GetVisible(control As IRibbonControl, ByRef visible)

    If MyTag = "show" Then
        visible = True
    Else
        If control.Tag Like MyTag Then
            visible = True
         Else
            visible = False
        End If
    End If
 End Sub

Sub RefreshRibbon(Tag As String)
    MyTag = Tag
    If RibUI Is Nothing Then
        MsgBox "Error, Save/Restart your workbook"
    Else
        RibUI.Invalidate
    End If
End Sub

W moim specjalnym skoroszycie, który powinien ładować wstążka, mam ukryty arkusz, z którego moja klasa modułu klasy odczytuje wartość dla każdego przycisku, aby określić, czy powinien on pokazywać, czy nie. Po przeczytaniu tej wartości mogę ukryć pojedynczy przycisk? Wszystkie znalezione przykłady wydają się działać tylko dla kart. Czy mogę przekazać ribbonUI do klasy i przejść przez każdą kontrolkę? Nie udało mi się znaleźć metody na to. Dzięki za pomoc!

questionAnswers(2)

yourAnswerToTheQuestion