Wordでは、ドキュメントを開いたり閉じたりするイベントに応じて、マクロを実行させることができます。
例えば次のようなイベントがあります。
Application.DocumentOpen イベント
Application.DocumentBeforePrint イベント
Application.DocumentBeforeSave イベント
Application.DocumentBeforeClose イベント
このうち、ドキュメントを保存するときに発生する「DocumentBeforeSave イベント」について説明します。
サンプルはWordのヘルプに記載されているものをそのまま使います。ただし単純に貼り付けただけでは動きません。Word2007で確認しました。
サンプル
Private Sub appWord_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
Dim intResponse As Integer
intResponse = MsgBox("Do you really want to save the document?", vbYesNo)
If intResponse = vbNo Then Cancel = True
End Sub
エディタを開く
Wordで開発-コード-VisualBasicを選択しエディタ(MicrosoftVisualBasic)を開く。
イベントの設定
イベントに応答するオブジェクト変数を宣言し、そのイベントが起きたときに実行するコードを書きます。
プロシージャの名前は「オブジェクト名_イベント名」となります。
プロジェクトエクスプローラで編集したい「Project」を選択。
挿入-クラスモジュールを選択。「Class1」が開く。
クラスモジュールに次の通り入力。※オブジェクト名「myapp」は任意。
クラスモジュールの上部左側のオブジェクトボックスから「myapp」を選択。
右側のプロシージャボックスから「DocumentBeforeSave」を選択。
クラスモジュールに次の通り自動的に入力される。この中にコードを記述。
End Sub
オブジェクトの初期化
イベントとそれに結びつくプロシージャを書きましたが、このままでは動きません。
「このイベントが発生したら動け」という指示を与える必要があります。
つまりドキュメントを開いたら、このマクロを実行しないと動きません。
プロジェクトエクスプローラで編集している「Project」を選択。
挿入-標準モジュールを選択。「Module1」が開く。
標準モジュールに次の通り入力。
Sub Register_Event_Handler()
Set X.myapp = Word.Application
End Sub
コメント