• 締切済み

B.xlsだけを開いて、A.xlsの中にあるマクロプログラムを実行するには

よろしくお願いいたします。 もう少し具体的に言うと、 A.xlsというファイルにて、「Test」というマクロプログラムを作りました。 これはA.xlsのsheet1についてある操作をするものです。 同様の操作を行いたいファイルが他にも、B.xls、C.xls、D.xls…と たくさんあります。 例えばB.xlsについて行うとき、プログラムはA.xlsに入っているので、 A.xlsとB.xlsの両方を開いて、B.xlsにおいて「ツール:マクロ」から 「A.xls!Test」を選んで実行していますが、常にA.xlsを開いていなければ ならないことに疑問を感じます。 B.xlsだけを開いて、A.xlsの中にあるマクロプログラムを実行する手段があるのでしょうか? 「アドイン」とかいうものを使えば…という知人がいますが、具体的には知らないそうです。 ご存知の方、よろしくお願いします。

みんなの回答

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.3

こんにちは。 処理用ブックを作り、そのブックからB.xlsやC.xlsを開いてもらうとか。。 Sub aaa() Dim FName, wb As Workbook  FName = Application.GetOpenFilename _      ("XLS (*.xls), *.xls", , "ファイルオープン")  If FName = False Then Exit Sub  Workbooks.Open (FName)  Set wb = ActiveWorkbook  '開いたファイルに対して何らかの処理  'wb.Worksheets(1).Range("A1") = Date 'この行は例  'マクロのあるファイルを閉じる  ThisWorkbook.Saved = True  ThisWorkbook.Close End Sub アドインでも個人用マクロブックでも各PCにセットする必要があるのに代わりはないです。 勝手に仕込んだらマクロウィルスと同じでしょうし。。。

  • moon00
  • ベストアンサー率44% (315/712)
回答No.2

普遍的に使うことが想定されるなら「個人用マクロブック」に登録してもよいのでは? それですと、Excelを立ち上げたとき、すぐに使える状態になります。 VBEでPERSONAL.xlsにモジュールをコピーすればOKです。 でも、あんまり長いマクロだと、やはり#1さんのやり方がいいでしょうね。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 マクロによる操作がどのようなものか分かりませんが、むしろA.xlsのみを開いておいて、ファイルを読み込んでそれぞれのファイルに操作を行うように、マクロの内容を変える方がいいのではないでしょうか。 A.xlsの代わりにそのマクロ実行専用のファイルを作り、そのマクロを移行してもいいと思います。 ファイルがたくさんあるなら、ループとかで連続処理した方がいいと思いますよ。

tarobei
質問者

補足

ありがとうございます。 私の質問の仕方が悪かったかもしれませんので補足させていただきますと、 ファイルがたくさんあるといったのは複数の人が同じようなファイルを 持っているという意味です。 このファイルは定期的に各人が新規に作成していくもので、その都度今回の処理を しないといけないのです。 ですので、サーバーにプログラムを置いておいて、各人にそれを使って 処理してもらうというようにしたいのですが、みんなに『「A.xls」をまず開いて、 そして自分の「B.xls」を開いて……』というのはどうもスマートじゃないな… サーバーから各人のエクセルのアドインっていうやつに登録なんてことができないのかな? なんて考えたりしていたのです。 支離滅裂な文章かも知れませんね…もし可能ならまたお返事ください。

関連するQ&A