PHB 希望我为 Microsoft Word 创建一个功能区切换按钮:
- 按下时,将编辑限制为填写表格并在没有密码的情况下保护文档。
- 未按下时,取消保护文档(无密码)。
我有以下 customUI.xml:
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="RibbonOnLoad">
<commands>
<command idMso="ProtectOrUnprotectDocument" onAction="ProtectOrUnprotectDocumentOnAction"/>
</commands>
<ribbon>
<tabs>
<tab id="LawTab" label="Law">
<group id="ProtectGroup" label="Protect">
<toggleButton id="ToggleProtectionButton" imageMso="GreenBall" label="Protection" getPressed="ToggleProtectionButtonGetPressed" onAction="ToggleProtectionButtonOnAction"/>
<button id="InvalidateRibbonButton" imageMso="Refresh" label="Invalidate Ribbon" onAction="InvalidateRibbonButtonOnAction"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
和以下 VBA 代码:
Private ribbon As IRibbonUI
Sub InvalidateRibbonButtonOnAction(control As IRibbonControl)
ribbon.Invalidate
End Sub
Sub ProtectOrUnprotectDocumentOnAction(control As IRibbonControl, ByRef cancelDefault)
ribbon.Invalidate
cancelDefault = False
End Sub
Sub RibbonOnLoad(ActiveRibbon As IRibbonUI)
Set ribbon = ActiveRibbon
End Sub
Sub ToggleProtectionButtonGetPressed(control As IRibbonControl, ByRef returnValue)
returnValue = ActiveDocument.ProtectionType <> wdNoProtection
End Sub
Sub ToggleProtectionButtonOnAction(control As IRibbonControl, ByVal pressed As Boolean)
If pressed Then
ActiveDocument.Protect wdAllowOnlyFormFields
Else
ActiveDocument.Unprotect
End If
End Sub
我可以重新调整内置 ProtectOrUnprotect 命令的用途,以便相应的内置按钮使功能区无效并因此更新我的自定义按钮,但如果我使用内置任务窗格(查看 > 限制编辑)或以编程方式(ActiveDocument.保护/取消保护),我的自定义按钮对更改一无所知。如何收听文档级事件以保护/取消保护,以便更新切换按钮的状态?