none
Wordイベントの制御について RRS feed

  • 質問

  • 以下のサイトを参考にWordVBAを作成しています。

    https://msdn.microsoft.com/ja-jp/library/aa140279(v=office.10).aspx

    標準モジュール(modHandleEvents)

    Dim objEventHandler As clsEventHandler
    
    Sub AutoOpen()
       Set objEventHandler = New clsEventHandler
        Set objEventHandler.AppThatLooksInsideThisEventHandler = Word.Application
      
    End Sub
    
    Sub AutoClose()
         Set objEventHandler = Nothing
    End Sub
    

    クラスモジュール(clsEventHandler)

    Public WithEvents AppThatLooksInsideThisEventHandler As Word.Application
    
    Private Sub AppThatLooksInsideThisEventHandler_DocumentBeforeClose(ByVal Doc As Document, Cancel As Boolean)
        ’・・・処理
    End Sub

    上記2つのコードを複数のWordファイルに実装しているのですが、

    Wordファイルを複数開いていると、

    開いている分だけ「AppThatLooksInsideThisEventHandler_DocumentBeforeClose」のイベントが実行されてしまいます。

    現在、アクティブなファイルの「AppThatLooksInsideThisEventHandler_DocumentBeforeClose」イベントのみ実行させる(「AppThatLooksInsideThisEventHandler_DocumentBeforeClose」を1回しか実行させない)方法はございますでしょうか?

    ご教示の程、よろしくお願いいたします。

    2018年4月19日 4:11

すべての返信

  • 直接の回答ではありませんが、アクティブなファイルとイベントが発生したファイルとを比較し、自分がアクティブなファイルではない場合は処理を行わないという手法は取れませんでしょうか?
    イベントの発生を制御するのは、一般的に難しいように思います。

    ★良い回答には質問者は回答済みマークを、閲覧者は投票を!

    2018年4月19日 6:07
    モデレータ