• 締切済み

Excel VBA 複数ブックのシート結合方法

複数ブックの特定のシート(都度指定)のみを結合するマクロを組みたいです。 例えば、「ファイルマージ前」というフォルダがあって、その中には数値のみ違う同フォーマットのアンケート集計結果が保存されています。 このフォルダ内には50ほどのブックが保存されていて、そのブック内の「N表」というシート(50あるブック内全てに存在するシート)を新規ブック(マクロを組み込むブック)の1シートに上から順に値コピーしていきたいです。 今後、別の機会でファイルマージが必要になった際にも使用出来る様に、シート名を都度指定(セルにシート名を入力して、そのシート名を参照する等)出来るようにしたいのですが、自分の知識とネット等で調べた情報のみではうまく作成出来ませんでした。 詳しい方のお知恵をお借りしたいです。 宜しくお願い致します。

みんなの回答

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.2

VBAを提示するのはやぶさかではないものの、 >数値のみ違う同フォーマット このフォーマットの説明が欲しいのです。 1行目からデータが埋まってますか? それともタイトル行がありますか? 更に、例えば、データのA2セルから 下方向に探して最初に出会う空欄の行の直前が最終行と判断していいですか? 列数は固定ですか?、それとも A1セルから右方向に探して最初に出会う空欄の列の直前が最終列と判断していいですか?

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

VBAの兄弟の「FSO」を調べて・勉強してください。 そして対象にしないブックはそのフォルダから手作業などで、除外する。初心者向けに、思考やコードを簡単にするためです。ブック集団に対して、For Each・・Nextを使えるようにするためです。 するとそのフォルダに対し、For Each・・Nextで対象ブックを順次全数、捉えられるでしょう ーー 1つのブックを捉えた段階で、出来ればForEach ・・Nextで全シートを捉え、 邪魔な(スキップしたい)シートは、シート名の特徴で、IF文で、除外出来れば、コードが簡単に済みます。 ーー データ累積シートを1つ考え(固定する)、1つのシートを読むごとに、セルA1のCurrentRegionのセル範囲ををもとっめ、累積シートのEnd(xlup).Rowでその時点での最終行を素の求め、その+1行に、シートのデータをコピー貼り付けする。これを全ブク部のシートにわたって繰り返す。 ーー このやり方では、各シートに、最上1行とかに、見出し行がもしあれば、重複して邪魔になる。 事後削除とか、Resizeで最上1行を捨てる方法が考えられる。 == 全てWEBに、実例コードが見つかると思うから、Googleで「見出し行 削除 Resize」などで照会して調べて、多少手直しして下さい。 その他「VBA CyrrentRegion」「VBA  FSOの使い方」「VBA End(xlup).Row」など。 === 以上で「望まない対象データが混じる」「必要なものが漏れる」などの場合がないか、プログラムを書く前に、思考実験してみてください。この訓練が大切です。

関連するQ&A