1

我们正在使用 Office 2016 x86 和 Word 16.0.4405.1000 运行 W10 x64 LTSB。

我们正在使用自定义消息框,以便用户在在受保护视图中打开的文档中单击“启用编辑”时获得“确定/取消”对话框。该代码类似于您在 MSDN 中看到的代码: https ://msdn.microsoft.com/en-us/library/office/hh128817(v=office.14).aspx

如果用户选择取消,我们将“True”传递给 VBA 子“ProtectedViewWindowBeforeEdit(ByVal PvWindow As ProtectedViewWindow, Cancel As Boolean)”中的取消参数。

这会导致警告“Word 无法读取此文档”。这很好。

确认警告对话框后,Word 崩溃并显示“Word 已停止工作”。

事件查看器正在记录:#1000(应用程序错误)。故障模块:mso30win32client.dll

但是,我们在 Excel 2016(相同版本)中使用相同的代码,并且工作正常。

我读到 DisplayLink 驱动程序过去曾出现过导致此问题的问题。我们尝试禁用硬件加速并关闭 COM 加载项,但没有成功。

非常感谢任何帮助。

更新:如何重现:

  1. 使用 Word 2016 创建 DOTM 文件。

  2. 在 VBA 中创建一个模块并粘贴此代码:

    Public appObject As New clsEvents
    
    Public Sub autoexec()
        Set appObject.WDApp = Word.Application
    End Sub
    
  3. 创建一个类模块,将其命名为 clsEvents 并粘贴以下代码:

    Public WithEvents WDApp As Word.Application
    
    Private Sub WDApp_ProtectedViewWindowBeforeEdit(ByVal PvWindow As ProtectedViewWindow, Cancel As Boolean)
        Cancel = (MsgBox("Text", vbOKCancel, "Event") = vbCancel)
    End Sub
    
  4. 将 DOTM 文件放入 Word 启动位置(请参阅 Word 选项 --> 高级 --> 文件位置 --> 启动)。

  5. 在受保护的视图中打开文件(Word --> 文件 --> 打开 --> 浏览 --> 选择文件 --> 展开打开下拉列表 --> 在受保护的视图中打开)

  6. 单击 ProtectedView 栏中的“启用编辑”。

  7. 在 MsgBox 对话框中按“取消”并单击 OK 确认以下错误消息。

  8. “Microsoft Word 已停止工作”

4

0 回答 0