ドキュメントを開いたときに自動的にマクロを実行する方法として、WordにはAutoOpen、ExcelにはAuto_Openといったプロシージャを利用する方法が用意されていますが、PowerPointにはそういった方法は無いのでしょうか?
― 実はPowerPointにもマクロ自動実行の仕組みは用意されています。
下記コードを標準モジュールに貼り付けてファイルを保存し、再度ファイルを開くと…
Option Explicit Public Sub Auto_Open() MsgBox "Auto_Open" End Sub Public Sub Auto_Close() MsgBox "Auto_Close" End Sub
…何も動作しません。
WordやExcelと違ってPowerPointの”Auto_Open”はアドインとして読み込まなければ実行されません。
改めて、ファイルをアドイン形式(ppa,ppam)で保存し、アドインダイアログから保存したアドインを読み込むと…
今度はマクロが実行されました。
下記Webページにもあるように、Auto_Openプロシージャはアドインが読み込まれたときに、Auto_Closeプロシージャは読み込みが解除されたときに自動的に実行されます。
・PowerPoint アドインがロードまたはアンロードされているときにコードを自動的に実行する
http://msdn.microsoft.com/ja-jp/library/cc376820.aspx
上記のように、アドイン形式にすればアプリケーションを起動したとき(アドインが読み込まれたとき)にマクロを自動実行することができるわけですが、正直使い勝手は良くありません。
そこで私は、”リボンをカスタマイズしてcustomUI要素のonLoad属性のコールバックを利用する方法“をお薦めします。
※ リボンのカスタマイズ方法はここでは詳しく解説しませんので、私のHP「初心者備忘録・リボン関連」をご参照ください。
・XML
<?xml version="1.0" encoding="utf-8"?> <customUI onLoad="Ribbon_onLoad" xmlns="http://schemas.microsoft.com/office/2006/01/customui" />
・標準モジュール
Option Explicit Public Sub Ribbon_onLoad(ribbon As IRibbonUI) MsgBox "Ribbon_onLoad" End Sub
上記XMLとVBAコードを設定したファイルを開くと、Ribbon_onLoadプロシージャが自動的に実行されるのが確認できます。
PowerPointのバージョンが2007以降に限られてしまうのが難点ですが、この方法であればいちいちアドイン形式で保存する必要は無いので動作確認も楽になります。
もちろん、アドインとして読み込んだ場合にも実行されます。
リボンをカスタマイズする、という一手間は掛かってしまいますが、PowerPointドキュメントを開いたときにマクロを自動実行したい、という場合には非常に有用な方法ですので、是非一度お試しください。
この記事へのコメントはありません。