たまたま使用する機会があったのでメモ書き程度に情報を残しておきます。
Wordの開発者用リファレンス > 概念 > 自動実行マクロ でも紹介されているように、Wordには下記5つの自動実行マクロが用意されています。
マクロ名 | マクロが実行されるとき |
AutoExec | Word を起動するとき、または全文書対象のテンプレートを読み込むとき |
AutoNew | 文書を新しく作成するとき |
AutoOpen | 既存の文書を開くとき |
AutoClose | 作業中の文書を閉じるとき |
AutoExit | Word を終了するとき、または全文書対象のテンプレートの読み込みを解除するとき |
※ 自動実行マクロより
「イベントを使用して Microsoft Word を制御する」によると上記マクロの一部はDocumentオブジェクトのイベントに置き換えられたレガシー機能になるわけですが、Auto Macros(Word 2013 developer reference)にも記載されているように、最新版のWord 2013でもサポートされています。
文書を開いたとき、あるいは閉じたとき等、任意のタイミングでマクロを実行したい場合は上記マクロがあることを覚えておくと良いですね。
そしてもう一つ覚えておきたいのが自動実行マクロの抑制方法で、自動実行マクロにも書いてある通りですが、
・マクロが実行されるタイミングでShiftキーを押す。
・マクロが実行される前にWordBasicオブジェクトの「DisableAutoMacros」ステートメントを実行する。
※ 例えばAutoCloseマクロが設定された文書を閉じる際に下記のようなコードを実行するとAutoCloseマクロが実行されなくなります。
Public Sub Sample() Application.WordBasic.DisableAutoMacros 1 '「1」は省略可 ActiveDocument.Close End Sub
※ 再度マクロを実行できるようにしたい場合は「WordBasic.DisableAutoMacros 0」を実行するか、Wordを再起動する必要があります。
といった方法で自動実行マクロが実行されないようになります。
「DisableAutoMacros」のようなレガシー機能が今でも活用できるのはなかなか面白いですね。
この記事へのコメントはありません。