Run は Run でも微妙に違う
Excel にも Word にも、Run メソッドがあります。
Excel2007 と Word2007 で Run の実験をしてみたら、少々おもしろい結果になりました。
まず、Excel と Word について、それぞれ標準モジュールを2つ挿入しておき、Module1 に
Public X As String Sub TestMain() On Error Resume Next X = "モジュール名なし" Application.Run "MacroM" Application.Run "MacroG" X = "モジュール名あり . の場合" Application.Run "Module2.MacroM" Application.Run "Module2.MacroG" X = "モジュール名あり ! の場合" Application.Run "Module2!MacroM" Application.Run "Module2!MacroG" On Error GoTo 0 End Sub
Module2 に
Private Sub MacroM() Debug.Print "MacroM " & X End Sub Public Sub MacroG() Debug.Print "MacroG " & X End Sub
と書いておきます。
で、実行してみると、、、
【Excelの実行結果】
MacroM モジュール名なし MacroG モジュール名なし MacroM モジュール名あり . の場合 MacroG モジュール名あり . の場合
【Wordの実行結果】
MacroM モジュール名なし MacroG モジュール名なし MacroM モジュール名あり . の場合 MacroG モジュール名あり . の場合 MacroG モジュール名あり ! の場合
と、見てのとおりです。
めんどくさいから詳しく調べないけど、多分バージョンによって結果は変わるような気がします。
↓のMOUGのスレッドの質問に書かれている現象と違っているようですから。
MOUG Excel VBA掲示板 2007/05/27(日)10:44:35
『Runメソッドで呼び出せるプロシジャーのスコープについて』
http://www2.moug.net/bbs/exvba/20070527000007.htm
質問の中身は、要約すると
Excel と Wordで Run メソッドでの呼び出し先のスコープ指定によって 実行できる場合とできない場合の結果が異なるのは何故? Word では、文書名またはプロジェクト名を指定すると Public のものしか 実行できないが、指定しないと Private でも呼び出せるのは何故?
といった感じです。
それと、これはバグなんじゃないかと思いますが、Word で
Application.Run "Module2!MacroG"
と書いたときは、実は ! の前にデタラメのモジュール名を書いても実行できます。
※.Excel World の 2007年5月28日 01:36 の日記をコピーしています。
http://excel.sns.fc2.com/excel/