Auto_Open の引数

自動実行プロシージャである Auto_Open に Optional を使えば引数を渡すことができます。マクロから実行したときに限りますが。
勿論、自動実行プロシージャの機能は持ったままです。
以下、実験
 
Book2.xls の Module1 に↓のコードを書いておきます。

Sub Auto_Open(Optional Arg As Variant)
  If IsMissing(Arg) Then
    MsgBox "引数は渡されなかった。" _
       , vbInformation, "Auto_Open"
  Else
    MsgBox "引数 " & Arg & " が渡された。" _
       , vbInformation, "Auto_Open"
  End If
End Sub

この Auto_Open は、Book2.xls を手動で開いたときに実行されます。
勿論、"引数は渡されなかった。"の方のメッセージが出ます。
 
そして、

Sub Macro0()
  Const cFName = "D:\Book2.xls"
  Workbooks.Open Filename:=cFName
  Application.Run Macro:=Dir(cFName) & "!Module1.Auto_Open" _
         , Arg1:="TEST"
End Sub

というマクロで、Book2.xls を開いて、Auto_Open を実行させると…
 
書いたとおりのことが実行されます。
 
実用性は、、、全然ないですね。(-_-;)
 
※.Excel World の 2006年8月21日 01:56 の日記をコピーしています。
http://excel.sns.fc2.com/excel/