こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

EXCEL VBA 複数のファイルをひとつのシートにまとめたい

多数のユーザーから集計表が送られてくるので、いくつかの取り纏めの箇所を経由して集計をまとめようと思います。

マクロでそれぞれの集計表を特定のフォルダに格納し、フォルダ内の対象ファイルを探し、そのファイル名をシートに書き出すところまで行ったのですが、ひとつのファイルのひとつのシートにまとめる方法がわかりません。

(元の集計表は総て同じレイアウトになっています。
これをひとつのシートの下方向に追加していくようにひとつの表にまとめたいのです。)

ある取り纏め担当者は3つのファイルをまとめれば済むかもしれませんが、ある担当者は20個のファイルをまとめないといけないかもしれません。
この後をどうすればよいか、どなたかお教えください。
宜しくお願いいたします。
説明が分かり難いようでしたら申し訳ございません。

投稿日時 - 2002-07-01 15:35:27

QNo.304082

すぐに回答ほしいです

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

popinnobakaさんこんにちは。
ファイル名をシートに書き出せるということは、ファイル名の取得ができているわけですから、Openメソッドで、ファイルを開くことが可能ですね。次からが、ちょっとややこしいのかもしれませんが、順を追って動作を考えてみます。纏め用のファイルは、すでに開かれているものとします。

1, 送られて来たデータファイルのうち、1個を開く。
2, データがあるシートをアクティブにする。
3, データ範囲を調べて、コピーする。
4, 纏め用のシートのデータ範囲を調べる。
5, 4で調べた範囲より下の列に、3でコピーした値を貼り付ける。
6, データファイルを閉じる。
7, 次のデータファイルを開く。
8, 以降2~7の繰り返し。

データ範囲を調べる作業は重要です。私の場合、次のような関数を作っています。

Function Myrec(cellsColmun As Integer) As Integer
'最下段を調べる
Myrec = Range(Cells(ActiveSheet.Rows.Count, cellsColmun) _
.End(xlUp).Address).Row
End Function

Function Mycol(cellsRow As Integer) As Integer
'最右列を調べる
Mycol = Range(Cells(cellsRow, ActiveSheet.Columns.Count) _
.End(xlToLeft).Address).Column
End Function

また、UsedRange プロパティを用いても良いでしょう。

上記1~8までをコーディングする際に注意する点は、アクティブになっているブック、シートなどを意識しなければならないことです。ファイルのオープン→コピー&ペースト→ファイルクローズが繰り返されるからです。マクロは、纏め用のファイルで実行されることと思いますが、それを明示するには、私はThisWorkbookプロパティを多用しています。
まずは、概要的な提案までにとどめます。

投稿日時 - 2002-07-01 16:25:06

お礼

ありがとうございます。
難しそうですが、頑張ってみます。
また分からなくなりましたら宜しくお願いいたします。
取り急ぎお礼申し上げます。

投稿日時 - 2002-07-01 18:16:59

ANo.1

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問