Office 2016 x86 および Word 16.0.4405.1000 で W10 x64 LTSB を実行しています。
保護されたビューで開かれたドキュメントで [編集を有効にする] をクリックすると、ユーザーが [OK/キャンセル] ダイアログを表示するように、カスタム メッセージ ボックスを使用しています。このコードは、MSDN で確認できるものと似ています: https://msdn.microsoft.com/en-us/library/office/hh128817(v=office.14).aspx
ユーザーが [キャンセル] を選択した場合、VBA Sub "ProtectedViewWindowBeforeEdit(ByVal PvWindow As ProtectedViewWindow, Cancel As Boolean)" 内の Cancel 引数に "True" を渡します。
これにより、「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 ダイアログで「キャンセル」を押し、以下のエラーメッセージを OK で確認します。
「Microsoft Word が動作を停止しました」