複数ファイルを指定して取り込み、そのデータを集計してくれるマクロの作り方を教えてください!
初めての投稿なので、質問が分かりづらいかもしれませんが、ご容赦ください(>_<)
その際は指摘してくだされば書き足します!
マクロ初心者です。
今回、以下のような条件を可能にしてくれるマクロを作りたいです。
・他ファイルから取り込んだシートを、作業中のブックに新しいシートとして追加する
(取り込む内容は数値が違うだけで、同じフォーマットのデータです)
・取り込むシートの数は場合によって異なるので、何枚でも追加できるようにしたい
・出来ればその追加したシートにそれぞれ名前をつけたい(データA,データBなど)
・追加されたシートのデータを最後に集計する
(例えば・・・追加されたデータAとデータBのセルA1を足した値を集計シートのA1セルに入れる)
雛形の枠があって、その中に別ファイルから取り込んだデータをコピーして、その枠の中に入れることはできたのですが、新しくシートをどんどん追加していくのができませんでした。
どうか、よろしくお願いしますm(__)m
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%のご相談者さんは作り方を聞くよりも,結局丸投げで誰かに書いて貰ったマクロをコピーさせてもらう方に飛びつきます。
この回答への補足
回答&指摘ありがとうございます!
確かに、作り方を教えていただくより、作ってもらった方がすごく助かります(>□<;)
なので質問に追記しました。
ちなみに、keithinさんが作ってくださったマクロを実行させてみたところ、
取り込んだブックの名前がシート名になっていて感動しました。
これだと分かりやすいですね^^
不明確な質問なのに作ってくださってありがとうございました!
補足の箇所に書き忘れてしまったので、こちらに追記させていただきます。
お礼の蘭にもかかわらず、申し訳ありません。
指摘の通り、もう一度仕様を具体的に書き直します。
●同じ雛型をコピーしたファイル同士の集計になります
●1つを集計用のファイルとして、そのファイルにマクロを作りたい
●取り込むファイルは
フォルダの場所を指定して、そこにあるxlsファイルを拾いたい
●ファイルを1つを取り込んだら、続けてまた取り込むか確認してほしい
⇒yesならば、もう一度フォルダの場所を指定する
⇒noならば、ファイルの取り込みは終了
(面倒なら繰り返し手動で取り込みだけを行ってもOK)
●取り込むブックのシートは1枚で、そのシート名は全て同じ(仮に"実績")
しかし集計用のファイルにも同じ名前のシートがあるので
取り込んだファイルのシートと区別できるようにしたい("実績A"や、"実績B"など)
取り込んだファイル名でもOKです
●"実績A"と"実績B"(追加されたシート)をそれぞれセルごとに集計(加算)
した値を、集計用ブックの"実績"シートに入れたい
●ファイル取り込みマクロと集計マクロは分けた方が良い
なんだか自分で書いてて、そんなこと出来るんだろうかという気になってきました…
No.3
- 回答日時:
シートをいくつ取り込むかわからないから集計の式も毎回変わってしまうというようなことで悩んでいるなら、いくつあっても集計はこのセルだ、ということを考えてみて下さい。
例えば、集計シート1番左、雛型シートは2番目、追加あれば右に増やして行く。雛型取り込み時と集計セルの関係は終わるまで固定です。
A+B=集計
A+B+C=集計
でなく
取り込む時に集計
集計=集計+A
集計=集計+B
集計=集計+C
の考えです。
ありがとうございます。
lavvさんの回答をヒントに、なんとかファイル取り込み→集計まで完成することができました。
今回色々調べながら一人で作ることができたので、満足です。
しかし使い勝手の面でもう少し改善したい点があるのですが、こちらも不明点があるので、新しく質問を投稿してヒントを得たいと思います。
回答ホントにありがとうございました!
No.2
- 回答日時:
今の状態からだと取り込むのはそのまま雛型固定でよい。
雛型に取り込んだ直後にシートコピーしシート名もそこで変更します。次のデータも同じく雛型に取り込んで、変更、これの繰り返しでしょう。
集計は取り込みしながらやるか後で一気にやるか、どちらでもできる話です。
ここの何がわかりませんか?他シートの参照?
プログラム設計する力を付けるようにがんばりましょう。答えを貰って実行だけでは上達遅くなります。
この回答への補足
>雛型に取り込んだ直後にシートコピーしシート名もそこで変更します。次のデータも同じく雛型に取り込んで、変更、これの繰り返しでしょう。
はい、その通りです!
>集計は取り込みしながらやるか後で一気にやるか、どちらでもできる話です。
ここの何がわかりませんか?他シートの参照?
追加したシート数(取り込むファイル数)は場合によって異なるので、どうしたら良いのかが分かりません。。
>プログラム設計する力を付けるようにがんばりましょう。答えを貰って実行だけでは上達遅くなります。
仰るとおりです。。
ただ、今回マクロを作るのが初めてなので、今回は作っていただいたコードを読んで勉強するようにしたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) VBA ふたつの同じ様式シートのセルをコピーしたい 2 2023/03/08 15:28
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Visual Basic(VBA) エクセルについて教えてください。 3 2023/06/28 09:11
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【エクセル】オートフィルタで...
-
ピボットテーブルでは時間の表...
-
フィルタをしても最下行を常に...
-
excelで集計の合計を降順に並べ...
-
エクセルで特定の色の数字だけ...
-
常にタイトル行と合計行を表示...
-
EXCELで増減率を計算したいです
-
【Excel】ピボットテーブルで他...
-
VBAで重複する項目を1つにまと...
-
エクセル、リソース不足エラー...
-
エクセルのピボットテーブルで...
-
EXCELで0を除いた平均値...
-
ピボットの集計方法「合計」初...
-
エクセルの集計
-
ピボットテーブルのページエリ...
-
EXCELで月別集計、グラフで実績...
-
エクセルの集計結果が間違って...
-
エクセル2010でピボットテーブ...
-
エクセル 日付(年月日)の合...
-
ピボットを更新すると数式が入...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【エクセル】オートフィルタで...
-
エクセルで特定の色の数字だけ...
-
ピボットテーブルでは時間の表...
-
フィルタをしても最下行を常に...
-
VBAで重複する項目を1つにまと...
-
アンケートの集計
-
ピボットを更新すると数式が入...
-
複数のピボットテーブルを一括...
-
ピボットの集計方法「合計」初...
-
EXCEL 重複データの集計の仕方
-
いい機能だけど、毎回めんどく...
-
エクセル、リソース不足エラー...
-
excelで集計の合計を降順に並べ...
-
エクセルの小計を自動的に色づ...
-
VLOOKUP関数とCOUNT関数等の組...
-
ピボットテーブルで同じデータ...
-
エクセル 関数を使った横方向の...
-
Excel : 二通りの合計が合わな...
-
ピボットテーブルのページエリ...
-
EXCELで増減率を計算したいです
おすすめ情報