| 魔界の仮面弁士様、詳細な解説をありがとうございます。
実行結果が違う点があるのですが.....
32bitマシンで試しました。
環境:OS:Windows Vista SP2 32bit、Excel2003,VB2008 .Net4.0
当初のコード Case 2 : Me.xlApp.Run("'" & BookName & "'!" & MacroName, args(0), args(1))
引数を()で囲む Case 2 : Me.xlApp.Run("'" & BookName & "'!" & MacroName, (args(0)), (args(1)))
CObj Case 2 : Me.xlApp.Run("'" & BookName & "'!" & MacroName, CObj(args(0)), CObj(args(1)))
上の3パターンですべて同じ結果になりました。
結果は以下の通りです。test2はそちらではOKみたいですが、こちらでは全滅でした。
やはり内部形式の型が同じ(VBA:Long,.Net:Int32)でも、Object型ではダメみたいです。
COMExceptionをキャッチした結果は
ErrorCode:-2146827284
Massage:マクロ ''Personal.xls'!test2' が見つかりません。
TargetExcel.VBARun("Personal.xls", "test", 1, 5) '型が異なるのでエラー===>エラー
TargetExcel.VBARun("Personal.xls", "test", 1s, 5s) '本来はこう書くべき===>エラ−
TargetExcel.VBARun("Personal.xls", "test2", 1, 5) 'これなら呼べる==−−−>エラ−
TargetExcel.VBARun("Personal.xls", "test3", 1, 5) 'これでも呼べる=====>OK
TargetExcel.VBARun("Personal.xls", "test4", 1, 5) 'こちらも呼べる=====>OK
すみません。次にPCに触れるのは夜になってしまいます。
|