Anpassen der PowerPoint-Multifunktionsleiste zur Laufzeit

Ich entwickle ein PowerPoint-Add-In und möchte einige der Ribbon-Steuerelemente vorübergehend deaktivieren, während sich das Add-In in der Anwendung befindetLaufen.

Ich habe eine Lösung entwickelt, die wie erwartet funktioniert, wenn das Add-In installiert istaktiviertDies ist jedoch nicht ausreichend, da hierdurch einige häufig verwendete Steuerelemente wie SlideMaster, SlideSorter usw. deaktiviert werden.

Ich verwende PowerPoint 2010.

Hier ist ein wohlgeformtes XML-Beispiel:

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
    <ribbon startFromScratch="false">
        <tabs>
            <tab idMso="TabView">
                <group idMso="GroupMasterViews" getVisible="GetVisible"/>
            </tab>
        </tabs>
    </ribbon>
</customUI>

Hier ist ein Beispiel für einen Rückruf ausdiese SO Antwort:

Sub GetVisible(control As IRibbonControl, ByRef returnedVal As Boolean)
    If TrapFlag Then
        returnedVal = False ' control is hidden
    Else:
        returnedVal = True  ' control is not hidden
    End If
End Sub

Wenn ich zum navigiereView In der Multifunktionsleiste informiert mich eine Warnmeldung über Folgendes:

Das Makro wurde aufgrund Ihrer Sicherheitseinstellungen nicht gefunden oder deaktiviert.

Vermutlich handelt es sich um dieGetVisible Makro? Meine Makroeinstellungen sind:

Alle Makros aktivieren (nicht empfohlen)Vertrauen Sie dem Zugriff auf das VBA-Projektobjektmodell

Ich habe Probleme mit dem, was ich bisher gefunden habe, aber bisher nicht in der Lage war, Vorschläge umzusetzen. Die meisten Antworten beziehen sich auf Excel. Ich habe nicht wirklich etwas spezielles für PowerPoint gefunden, aber es sollte nicht besonders schwierig sein, Code von einer Anwendung zur nächsten zu portieren, da ich dies für viele andere Dinge in VBA getan habe.

Ich habe es auch versuchtdiese Methode, aber dieSetCustomUI ist in PowerPoint im nicht verfügbarApplication oderPresentation Niveau, vielleicht ist es einzigartig oder nur für Visual Studio anwendbar?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage