他ブックのマクロを実行する


Excel 上で 2 つのブックを開いていたとします。ここでは仮に「Book1.xlsm」と「Book2.xlsm」としましょうか。

「Book1.xlsm」には『Sub Test1』というマクロがあり、「Book2.xlsm」には『Sub Test2』というマクロがあったとします。

ここで、Test1 から Test2 を実行しようと次のように書くとエラーになります。

Sub Test1()
    Call Test2
End Sub
Book1.xlsm には Sub Test2 がありませんので、Sub プロシージャが見つかりません というエラーです。本来のやり方は、Book1.xlsm から Book2.xlsm を参照設定すればよいのですが、これは面倒くさいです。

他ブックのプロシージャを実行するときは、Call メソッドではなく Run メソッドを使いましょう。

Sub Test1()
    Application.Run "Book2!Test2"
End Sub

とすれば OK です。ブック名とプロシージャ名を「!」でつなぐ点に留意してください。