- ベストアンサー
エクセルマクロで別ファイルのマクロを実行する方法は?
- エクセルのマクロで別ファイルのマクロを実行する方法について教えてください。
- 複数のエクセルファイルのマクロAを別のエクセルファイルのマクロBで実行することは可能でしょうか?
- マクロBによってマクロAのプロシージャを指定して実行させる方法はありますか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
回答2、myRangeです。 >実は、マクロAは複数のサブプロシージャがあり、メインプロシージャ(メインルーチン)から必要に応じてサブプロシージャ(サブルーチン)を呼び出す(Call)構造をしています。 >つまり、やりたいことはマクロBからマクロA内のサブプロシージャ(サブルーチン)を動作させたかったという意味でした。 質問者はちょっと勘違いしているようですね。 マクロAもプロシージャであり、Callされるのも同じプロシージャーです。 質問者がメイン、サブと呼んでいるだけで、それらは個々のプロシージャですから 例えば、マクロAからCallしている MacroAAA を実行させたければ Application.Run "別ブック.xls!MacroAAA" とそれを指定してやるだけです。
その他の回答 (3)
ファイルAのマクロをコピーしてファイルBのマクロに貼り付ければよいです。
- myRange
- ベストアンサー率71% (339/472)
マクロBから、別ブック.xls の MacroA を実行したい場合は マクロBに、次のコードを。。。 Application.Run "別ブック.xls!MacroA" それから、 >マクロBによってマクロAのプロシージャを指定して実行させることは? これ意味不明です。 マクロAのプロシージャとはなんでしょうか。 マクロAがプロシージャそのものだと思いますが。。。 そこら辺りはも少し詳しく補足する必要があるでしょう。
補足
回答ありがとうございます。 >Application.Run "別ブック.xls!MacroA" 早速、試してみます。 >マクロAのプロシージャとはなんでしょうか。 >マクロAがプロシージャそのものだと思いますが。。。 実は、マクロAは複数のサブプロシージャがあり、メインプロシージャ(メインルーチン)から必要に応じてサブプロシージャ(サブルーチン)を呼び出す(Call)構造をしています。 つまり、やりたいことはマクロBからマクロA内のサブプロシージャ(サブルーチン)を動作させたかったという意味でした。 申し訳ありませんでした。。。
- tadagenji
- ベストアンサー率23% (508/2193)
マクロの保存先をPERSONAL.XLSにすればどうですか
補足
回答ありがとうございます. ご指摘のとおり、マクロAをPERSONAL.XLSのモジュールに置き、マクロBの中でマクロAを呼んで(Call)見ましたが、 「sub または関数が定義されていません」 となってしまいました。つまり、マクロBからPERSONAL.XLS内のマクロAは見えないようです. ちなみに手動でPERSONAL.XLSに置いたマクロAを動かすことは出来ましたが・・・
お礼
myRange様ありがとうございます。 ファイルA(マクロAが入っている)のファイル名は、A001,A002,A003・・・となっていて(インクリメントしたいから)マクロBにおいて、 Dim F_Name As String F_Name="A001.xls" Application.Run (F_Name & "!MacroAAA") として無事に動かすことが出来ました。 myRange様 感謝いたします。本当に感謝しても仕切れません。 機会があるときはまたご教授ください。 本当にありがとうございました!!!
補足
myRange様ありがとうございます。 >質問者はちょっと勘違いしているようですね。 >マクロAもプロシージャであり、Callされるのも同じプロシージャーです。 その通りです。私が勝手にメインとかサブとか言っているだけでした。 申し訳ありませんでした。 >Application.Run "別ブック.xls!MacroAAA" 試してみます。