|
▼mitu さん:
こんばんは。
>あるブックから別のブックに引数を渡して別のブックのマクロを実行させるべく、下記のようにしました。その結果を戻したいのですが、うまくいきませんのでご教授お願いします。
Runメソッドの引数はByvalつまり、値渡しですからサブプロシジャーの
出力変数として使えませんよ!!
やるとしたら、Functionにして返してもらう方法ですが・・・。
>
>RPth = "'" & "データ処理.xlsのあるディレクトリ名"
>Application.Run (RPth & "データ処理.xls'!マクロ1"), "引数1","引数2,・・・"
>
>sub マクロ1(引数1,引数2,・・・・)
> -----------
>end sub
>
>"引数1"のデータはデータ処理.xlsに引き渡され実行されるのですが、その結果を元のあるブックの引数でアンサーとして得ることができません。
>
>対処の方法をご教授ねがいます。
私は、以下のようにしています。
例えば、ブックA.Xlsの
Thisworkbookのモジュールに
'======================================
sub caller_proc(a as long,b as long,c as long)
c=a+b
end sub
これをブックb.xlsの標準モジュールから呼び出すには、
'============================================
sub test()
dim aa as long
dim bb as long
dim cc as long
aa=2
bb=3
call workbooks("a.xls").caller_proc(aa,bb,cc)
msgbox cc
end sub
というように呼び出されるプロシジャーをオブジェクトモジュールに記述する
方法を使っています。
試してみて下さい。
|
|