• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数ファイルを指定して取り込み、そのデータを集計してくれるマクロの作り)

複数ファイルを取り込んでデータを集計するマクロの作り方

このQ&Aのポイント
  • マクロを使って複数ファイルからデータを取り込み、作業中のブックに新しいシートとして追加する方法を教えてください。
  • シートの数が異なる場合でも追加できるようにする方法についても教えてください。
  • 追加されたシートのデータを集計する方法も教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

Sub macro1()  Dim fs As Variant  Dim s As Variant  Dim w As Workbook  fs = Application.GetOpenFilename(Title:="select xls(s)", MultiSelect:=True)  If Not IsArray(fs) Then Exit Sub  For Each s In fs   Set w = Workbooks.Open(Filename:=s)   w.Worksheets(1).Copy after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)   ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count).Name = Application.Substitute(w.Name, ".xls", "")   w.Close savechanges:=False  Next  Worksheets(1).Range("A1").Formula = "=SUM(" & Worksheets(2).Name & ":" & Worksheets(Worksheets.Count).Name & "!A1)" End Sub >複数ファイルを指定して 複数のファイルとは,具体的にどこにどんな風にあるのをどんな具合に指定したいのか,ヤリタイ事が書かれていません。 「マクロを載せたブックを同じフォルダにあるxlsファイルを拾い上げたい」 「実はフォルダの場所を指定して,そこにあるxlsファイルを拾いたい」 「実はエクセルブックじゃなくCSVファイルからデータを取りたかった」 etc,etc >取り込んだシートを 開いたブックのどのシートを取り込みたいのか,ヤリタイ事が不明です。 >取り込むシートの数は場合によって異なるので、何枚でも追加できるようにしたい 1冊のブックの複数枚のシートを指定したいという意味なのか,複数のブックの1枚ずつの指定をしたいという意味なのか,具体的な動きの流れが説明されていないのでどんな意味にもとれる >それぞれ名前をつけたい それぞれ具体的にどこから名前をとってきたいのか,何をしたいのか説明されていない 以上のような説明不足部分を改めて決めながらマクロを書いていくと,自然と形になっていくと思います。 >作り方を教えてください 88%のご相談者さんは作り方を聞くよりも,結局丸投げで誰かに書いて貰ったマクロをコピーさせてもらう方に飛びつきます。

ka125ni
質問者

お礼

補足の箇所に書き忘れてしまったので、こちらに追記させていただきます。 お礼の蘭にもかかわらず、申し訳ありません。 指摘の通り、もう一度仕様を具体的に書き直します。 ●同じ雛型をコピーしたファイル同士の集計になります ●1つを集計用のファイルとして、そのファイルにマクロを作りたい ●取り込むファイルは  フォルダの場所を指定して、そこにあるxlsファイルを拾いたい ●ファイルを1つを取り込んだら、続けてまた取り込むか確認してほしい  ⇒yesならば、もう一度フォルダの場所を指定する  ⇒noならば、ファイルの取り込みは終了  (面倒なら繰り返し手動で取り込みだけを行ってもOK) ●取り込むブックのシートは1枚で、そのシート名は全て同じ(仮に"実績")  しかし集計用のファイルにも同じ名前のシートがあるので  取り込んだファイルのシートと区別できるようにしたい("実績A"や、"実績B"など)  取り込んだファイル名でもOKです ●"実績A"と"実績B"(追加されたシート)をそれぞれセルごとに集計(加算)  した値を、集計用ブックの"実績"シートに入れたい ●ファイル取り込みマクロと集計マクロは分けた方が良い なんだか自分で書いてて、そんなこと出来るんだろうかという気になってきました…

ka125ni
質問者

補足

回答&指摘ありがとうございます! 確かに、作り方を教えていただくより、作ってもらった方がすごく助かります(>□<;) なので質問に追記しました。 ちなみに、keithinさんが作ってくださったマクロを実行させてみたところ、 取り込んだブックの名前がシート名になっていて感動しました。 これだと分かりやすいですね^^ 不明確な質問なのに作ってくださってありがとうございました!

その他の回答 (2)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

シートをいくつ取り込むかわからないから集計の式も毎回変わってしまうというようなことで悩んでいるなら、いくつあっても集計はこのセルだ、ということを考えてみて下さい。 例えば、集計シート1番左、雛型シートは2番目、追加あれば右に増やして行く。雛型取り込み時と集計セルの関係は終わるまで固定です。 A+B=集計 A+B+C=集計 でなく 取り込む時に集計 集計=集計+A 集計=集計+B 集計=集計+C の考えです。

ka125ni
質問者

お礼

ありがとうございます。 lavvさんの回答をヒントに、なんとかファイル取り込み→集計まで完成することができました。 今回色々調べながら一人で作ることができたので、満足です。 しかし使い勝手の面でもう少し改善したい点があるのですが、こちらも不明点があるので、新しく質問を投稿してヒントを得たいと思います。 回答ホントにありがとうございました!

  • layy
  • ベストアンサー率23% (292/1222)
回答No.2

今の状態からだと取り込むのはそのまま雛型固定でよい。 雛型に取り込んだ直後にシートコピーしシート名もそこで変更します。次のデータも同じく雛型に取り込んで、変更、これの繰り返しでしょう。 集計は取り込みしながらやるか後で一気にやるか、どちらでもできる話です。 ここの何がわかりませんか?他シートの参照? プログラム設計する力を付けるようにがんばりましょう。答えを貰って実行だけでは上達遅くなります。

ka125ni
質問者

お礼

お礼が前後してしまい、また、遅くなって申し訳ありません。 つたない質問にも関わらず、回答ありがとうございました!

ka125ni
質問者

補足

>雛型に取り込んだ直後にシートコピーしシート名もそこで変更します。次のデータも同じく雛型に取り込んで、変更、これの繰り返しでしょう。 はい、その通りです! >集計は取り込みしながらやるか後で一気にやるか、どちらでもできる話です。 ここの何がわかりませんか?他シートの参照? 追加したシート数(取り込むファイル数)は場合によって異なるので、どうしたら良いのかが分かりません。。 >プログラム設計する力を付けるようにがんばりましょう。答えを貰って実行だけでは上達遅くなります。 仰るとおりです。。 ただ、今回マクロを作るのが初めてなので、今回は作っていただいたコードを読んで勉強するようにしたいと思います。