在 MS Word 中使自定义功能区 UI 无效

Invalidate Custom Ribbon UI in MS Word

我在 MS Word 中创建了一个自定义选项卡,它构成了文档检查过程的一部分。在流程开始时,会打开一个用户表单,您可以添加 x 数量的电子邮件,以便稍后在检查流程中使用。

想法是让自定义标签动态更新显示相应的编号。在用户表单中输入电子邮件的按钮数量。

我已经编辑了 XML 并且据我所知拥有所有必需的功能但是当我尝试调用 Reintialise() 以使 UI 在用户表单完成后无效时:

Public MyRibbon As IRibbonUI
Public Declare PtrSafe Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByRef destination As Any, ByRef source As Any, ByVal length As Long)

Public Sub MyAddInInitialize(Ribbon As IRibbonUI)
    Set MyRibbon = Ribbon
    ActiveDocument.Variables.Add("RibbonAddress") = CStr(ObjPtr(Ribbon))
End Sub

Function GetRibbon(ByVal lRibbonPointer As LongPtr) As Object
    Dim objRibbon As Object
    CopyMemory objRibbon, lRibbonPointer, LenB(lRibbonPointer)
    Set GetRibbon = objRibbon
    Set objRibbon = Nothing
End Function

Sub btnCheck_getVisible(control As IRibbonControl, ByRef returnedVal)
    'If condition to toggle getVisible callback from VBA that works
End Sub

Sub Reintialise()
    If MyRibbon Is Nothing Then
        Set MyRibbon = GetRibbon(ActiveDocument.Variables("RibbonAddress"))
        MyRibbon.Invalidate
    Else
        MyRibbon.Invalidate
    End If
End Sub

当运行试图将功能区信息写入到多变的。如果在 sub reintialise 中它只有 MyRibbon.Invalidate 我收到错误“运行-time error '91': Object Variable or With Block Variable not set' 这显然来自 MyRibbon 未定义。

我试图调用 MyAddInIntialise 来重新定义对象 MyRibbon 以及将 'Ribbon' 存储为文档变量以供稍后调用,但到目前为止,我的方法 none 有效。

XML 按钮示例:

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="MyAddInIntialize">
    <ribbon>
        <tabs>
            <tab id="customTab" label="Checking" insertAfterMso="TabReviewWord">
                <group id="startGov" label="Governance Progress Overview">
                    <button id="emailCheck1" label="Send Document to First Checker" size="large" 
                    onAction="send_email" getVisible="btnCheck_getVisible" 
                    getEnabled="btn_trigger" imageMso="AppointmentColor1"/>
                </group>
            </tab>
        </tabs>
    </ribbon>

你有任何丝带 UI 错误吗?

默认情况下,如果 add-in 尝试操作 Microsoft Office 用户界面 (UI) 但失败,则不会显示任何错误消息。但是,您可以将 Microsoft Office 应用程序配置为显示与 UI 相关的错误消息。您可以使用这些消息来帮助确定自定义功能区未显示的原因,或者显示功能区但未显示控件的原因。

要显示 VSTO Add-in 用户界面错误,您需要:

  1. 启动应用程序。
  2. 单击 File 选项卡。
  3. 点击Options
  4. 在类别窗格中,单击 Advanced
  5. 在详细信息窗格中,select Show VSTO Add-in user interface errors,然后单击 OK

有关详细信息,请参阅 How to: Show Add-in user interface errors


确保 Office 应用程序调用的 MyAddInInitialize 方法和对象已正确初始化。