dポイントプレゼントキャンペーン実施中!

複数ファイルを指定して取り込み、そのデータを集計してくれるマクロの作り方を教えてください!

初めての投稿なので、質問が分かりづらいかもしれませんが、ご容赦ください(>_<)
その際は指摘してくだされば書き足します!

マクロ初心者です。
今回、以下のような条件を可能にしてくれるマクロを作りたいです。

・他ファイルから取り込んだシートを、作業中のブックに新しいシートとして追加する
 (取り込む内容は数値が違うだけで、同じフォーマットのデータです)
・取り込むシートの数は場合によって異なるので、何枚でも追加できるようにしたい
・出来ればその追加したシートにそれぞれ名前をつけたい(データA,データBなど)
・追加されたシートのデータを最後に集計する
 (例えば・・・追加されたデータAとデータBのセルA1を足した値を集計シートのA1セルに入れる)

雛形の枠があって、その中に別ファイルから取り込んだデータをコピーして、その枠の中に入れることはできたのですが、新しくシートをどんどん追加していくのができませんでした。

どうか、よろしくお願いしますm(__)m

A 回答 (3件)

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%のご相談者さんは作り方を聞くよりも,結局丸投げで誰かに書いて貰ったマクロをコピーさせてもらう方に飛びつきます。

この回答への補足

回答&指摘ありがとうございます!
確かに、作り方を教えていただくより、作ってもらった方がすごく助かります(>□<;)
なので質問に追記しました。

ちなみに、keithinさんが作ってくださったマクロを実行させてみたところ、
取り込んだブックの名前がシート名になっていて感動しました。
これだと分かりやすいですね^^
不明確な質問なのに作ってくださってありがとうございました!

補足日時:2010/07/01 21:15
    • good
    • 0
この回答へのお礼

補足の箇所に書き忘れてしまったので、こちらに追記させていただきます。
お礼の蘭にもかかわらず、申し訳ありません。

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


なんだか自分で書いてて、そんなこと出来るんだろうかという気になってきました…

お礼日時:2010/07/01 21:48

シートをいくつ取り込むかわからないから集計の式も毎回変わってしまうというようなことで悩んでいるなら、いくつあっても集計はこのセルだ、ということを考えてみて下さい。




例えば、集計シート1番左、雛型シートは2番目、追加あれば右に増やして行く。雛型取り込み時と集計セルの関係は終わるまで固定です。

A+B=集計
A+B+C=集計
でなく
取り込む時に集計
集計=集計+A
集計=集計+B
集計=集計+C
の考えです。
    • good
    • 0
この回答へのお礼

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

回答ホントにありがとうございました!

お礼日時:2010/07/06 21:21

今の状態からだと取り込むのはそのまま雛型固定でよい。



雛型に取り込んだ直後にシートコピーしシート名もそこで変更します。次のデータも同じく雛型に取り込んで、変更、これの繰り返しでしょう。

集計は取り込みしながらやるか後で一気にやるか、どちらでもできる話です。
ここの何がわかりませんか?他シートの参照?



プログラム設計する力を付けるようにがんばりましょう。答えを貰って実行だけでは上達遅くなります。

この回答への補足

>雛型に取り込んだ直後にシートコピーしシート名もそこで変更します。次のデータも同じく雛型に取り込んで、変更、これの繰り返しでしょう。

はい、その通りです!


>集計は取り込みしながらやるか後で一気にやるか、どちらでもできる話です。
ここの何がわかりませんか?他シートの参照?

追加したシート数(取り込むファイル数)は場合によって異なるので、どうしたら良いのかが分かりません。。


>プログラム設計する力を付けるようにがんばりましょう。答えを貰って実行だけでは上達遅くなります。

仰るとおりです。。
ただ、今回マクロを作るのが初めてなので、今回は作っていただいたコードを読んで勉強するようにしたいと思います。

補足日時:2010/07/01 21:53
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/07/06 21:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!