我们使用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加载项但没有成功。
非常感谢任何帮助。
更新: 如何重现:
使用Word 2016创建DOTM文件。
在VBA中创建一个模块并粘贴此代码:
Public appObject As New clsEvents
Public Sub autoexec()
Set appObject.WDApp = Word.Application
End Sub
创建一个类模块,将其命名为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
将DOTM文件放入Word启动位置(请参阅Word选项 - >高级 - >文件位置 - >启动)。
在受保护的视图中打开文件(Word - >文件 - >打开 - >浏览 - >选择文件 - >展开打开下拉菜单 - >打开保护视图)
单击ProtectedView栏中的“启用编辑”。
按下MsgBox对话框中的“取消”,然后单击“确定”确认以下错误消息。
“Microsoft Word已停止工作”