1

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 アドインを無効にしようとしましたが、成功しませんでした。

どんな助けでも大歓迎です。

更新:再現方法:

  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