使用Cancel = True退出ProtectedViewWindowBeforeEdit()时,“Word已停止工作”

时间:2016-08-01 07:17:34

标签: vba ms-word crash office-2016

我们使用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 Sub“ProtectedViewWindowBeforeEdit(ByVal PvWindow As ProtectedViewWindow,Cancel As Boolean)”中的Cancel arguement。

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

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

Eventviewer正在记录:#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对话框中的“取消”,然后单击“确定”确认以下错误消息。

  8. “Microsoft Word已停止工作”

0 个答案:

没有答案