- 締切済み
複数ファイル・複数シートのデータマージ処理
VBA初心者です。 あるフォルダに格納されている複数ファイルのあるシートを内容を、別のExcelファイルにコピペする(マージする)+コピー元のファイル名称・集計日を転記するマクロが知りたくて質問を投稿いたします。 <インプット> ・Excelファイル(xlsx形式) ※現状は16ファイルですが、今後増える予定です。MAX値は未定。 ・Excelファイルは保護されている ・ファイルの項目は2種類ある <処理イメージ> (1)インプットファイルが格納されているパスを指定 (2)取り込む対象のファイルを指定(名称すべてではなく、部分的な名称指定がありがたいです) (3)指定されたインプットファイルの指定されたシートの情報を新規ファイルに転記 (4)次の指定されたインプットファイルの指定されたシートの情報を上記(3)でペーストした情報の一番下の1行下に追加。 (5)上記(4)を指定したインプットがなくなるまで繰り返し (6)(5)が済んだら、アウトプットシートのA列に取り込んだファイル名・B列に取り込んだシートの名 (7)保存して終了 <アウトプット> ・Excelファイル(xlsx形式) ・保護なし
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- HohoPapa
- ベストアンサー率65% (455/693)
さほど複雑な作業ではないでしょうから、 サンプルとなりそうなソースコードを提示することは やぶさかではないものの、 求めている仕様に不明なところが多いのです。 以下に不明な個所を列挙しますので それを踏まえ、シートサンプルのイメージを添えて 再質問したほうがいいと思います。 >あるフォルダに格納されている複数ファイルのあるシートを内容を 1ファイル1シートですか? 1ファイル複数シートなら、対象のシートをどのように特定すればいいですか? >・Excelファイルは保護されている 読み取りパスワードが設定されているということですか? ならば、そのパスワードはどのように得ればいいですか? >・ファイルの項目は2種類ある 意味不明です。 >(2)取り込む対象のファイルを指定(名称すべてではなく、部分的な名称指定がありがたいです ファイル名に特定の文字列を含むブックだけを対象にしたい ということですか? ならば、どの文字列はどのように得ればいいですか? >(3)指定されたインプットファイルの指定されたシートの情報を新規ファイルに転記 対象となる列たちはどの列ですか? 更に、その列たちをどの列に転記すればいいですか? >(5)上記(4)を指定したインプットがなくなるまで繰り返し >(6)(5)が済んだら、アウトプットシートのA列に取り込んだファイル名・B列に取り込んだシートの名 (5)の前に(6)を行うのではありませんか? 冒頭に、 >集計日を転記する とありますが、これはどの列、どの行に格納しますか? >アウトプットシートのA列に取り込んだファイル名・B列に取り込んだシートの名 このアウトプットシートとは、 データたちをペーストするシートですか? ならば、複写元のデータたちを格納したシートのA,B列は空欄ですか? さらに、どの行に書き出せばいいですか? それとも、別なシートですか? 複写元シートたちの最終行はどのように判断すればいいですか? たとえば、C列の最終行といった条件です。 手前味噌ですが https://okwave.jp/qa/q9664019.html を参考に挑戦し、不明な点を質問していただければ コメントできると思います。
- imogasi
- ベストアンサー率27% (4737/17069)
・VBAプログラムを作ってくれと、言わんばかりの丸投げで、一部業務のプログラムを委託するような形になっているが、質問者がもっと勉強して、行き詰まった点に絞り、質問すべきだ。 ・データ例が示されてないので、回答者はテストデータを自分で作らないとならない。それに時間がかかる。でも商売がらみのデータをここに挙げろ、とも言えないので困ったものだ。 == Excelには「統合」という機能が用意されている。 解説例 https://hamachan.info/excel/tougou.html データの統合 別途、VBAでも組める。 これなど、本件に使えないか検討済みか? VBAに気が行って、エクセルの機能の勉強がおろそかになっていないか? ーー >マージ処理 60年ぐらい前は、オフラインバッチ処理が主流で、マスターファイル1つに トランザクションファイルが複数あって、データのキーでマッチング処理をしてデータによる更新をしたもんだ。Cobolで処理が多かった時代。 マージもそれと通じる考えだ。質問者はどういう考えで、マージと言っているのかな。原義は、キーに関して、同じ並び順のデータを1つのデータセットにするというイメージなんだが。 ーー こんな記事もある。 https://excelkamiwaza.com/folder_file_read.html EXCEL フォルダ内のブック(ファイル)を結合(統合)/VBAマクロで複数ファイルをまとめる! ーー ただ「統合」は、Consolidateメソッドですが。 https://excelkamiwaza.com/folder_file_read.html ーー http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_consolidate.html に .Range("B1").Consolidate _ Sources:=Array("'[Book2]1学期'!R1C2:R100C7", _ "'[Book2]2学期'!R1C2:R100C7", _ "'[Book2]3学期'!R1C2:R100C7"), _ Function:=xlSum, _ のような例が載っていて、複数ブックの場合の参考になる。