• 締切済み

同フォルダ内複数BOOKを一つのBOOKにまとめる

  『同じフォルダ内の複数BOOKのシートの一部をまとめて1つのBOOKに貼り付けたい』(ミント) 大変困っています!! すべて同じ構成の複数BOOKの最初のシート(Sheet1)の一部のセル範囲を新しい集計用のシートに貼り付けるVBAのコードを教えてください!!!!!! VBAを使用したいのですが、いろいろ調べてもたくさんコードがあって、どれを使えばいいかわからず、混乱状態になってしまっています。。。 詳細はこのような形です。 各BOOKの最初にSheet1があり、その構成はどのBOOKも同じです。 <たとえば・・。>【Book1】 A B C D 1 あ い う え→ラベル行2 お か き く3 け こ さ し【Book2】 A B C D 1 あ い う え→ラベル行2 す せ そ た3 ち つ て と これを【集計用シート】 A B C D 1 あ い う え2 お か き く3 け こ さ し4 す せ そ た5 ち つ て と このようにつなげていきたいのです。全BOOKが複数シートありますが、集計するのはSheet1だけでよいです。 できれば、1行目にあるラベル以外を順番に貼り付けられればと思います。要するに、上記の例でいくと、2行目から集計用シートに貼り付けられていくイメージです。なお、すべてのBOOKは一つのフォルダにまとめられています。 VBA初心者でこの情報だけで絞り込めるのかわからないのですが、他にも情報が必要であれば教えてください。。。 上記のことができるコードを記載頂けたらと思います!!宜しくお願いします!!! なお、Excelのバージョンは2007、OSはWindows7です

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

エラーが出たときの,初歩的な対応の手順を憶えてください。 >「インデックスが有効範囲にありません」 >と表示されてしまいます。 エラーのダイアログでデバッグのボタンをクリックする どの行に色が付いて表示されるか確認する ●漫然と「うごいたー♪ 止まったー(T T)」と一喜一憂して終わりじゃなく,マクロの具体的にどの行でエラーになったか確認するのが重要ということです その行に書いた「何か」に問題があるので,状況を確認して『適切に』修正してください。 といわれても,いったい具体的に「どうしたらいい」のかわかりませんね。(わかったら質問しないでしょうから。) たとえば… ○range("A2:D" & range("A65536").end(xlup).row).copy _    destination:=thisworkbook.worksheets("集計").range("A65536").end(xlup).offset(1)  でエラーが起きていれば,アナタの集計ブックに「集計」シートを用意するという準備を怠っていることが考えられます。     たとえば… ○worksheets("Sheet1").activate  でエラーが起きていれば,開いたブックにあなたが言うようには「Sheet1」というシートが無いことが考えられます。  一連のマクロは,アナタの説明したように「Sheet1からデータをコピーしてくる」という前提で書かれているので,どうしたらアナタが思っているとおりにコトが運ぶか,対応を考える必要があります。  「実際にエラーが起きたとき」に。 一体全体具体的にどのブックが開かれていて問題が起きたのか,アナタがマクロを試している時の「具体的な状況」をアナタがご自分で確認して「何が起きて問題発生した」のかをしっかりアナタがご自分の目と手で確認して対応を考えてください。ということです。 ●その他,ちがう行でエラーが起きていたら。 具体的にどこで何が起きたのか,目に見える様子を具体的に補足して追加ご質問を投稿してください。 ちなみに… >やはり★の部分の記載が間違っているのでしょうか。 >Xls*をXlsになおせばよいだけでいいでしょうか。 そう思ったらそのようにご自分の手をまず動かして,何でもやってみてください。 間違ったパスを記入したときは,「エラーにもならず何も起こらないで,ただマクロが終わる」ように作ってあります。 間違った拡張子を記入したときは,それなりに違うマクロの行で違う警告が表示され,対処を間違ったことがわかります。 そうやって試してみたけどやっぱりご自分の手に負えないことがわかってから,改めて 「自分でこういう具合に手直したこのマクロを実行してみました」 「そうしたら,この行でこのエラーが起こりました」 「その時に開いたブックやシートの具体的な様子はこれこれでした」 のように,その時の様子を具体的に目に見えるように書き添えて,追加のご相談を投稿するようにしてみてください。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

準備: 集計用ブックに「集計」という名前のシートを用意しておく 集計シートの1行目にアナタの言うラベル行を作成する 2行目以下は空にして備えておく 手順: 集計ブックを開く ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける 当然ですがファイルの保存場所は★の行に適切に記入すること sub macro1()  dim myPath as string  dim myFile as string  mypath = "c:\test\"  ’★  myfile = dir(mypath & "*.xls*")  do until myfile = ""   workbooks.open mypath & myfile   worksheets("Sheet1").activate   range("A2:D" & range("A65536").end(xlup).row).copy _    destination:=thisworkbook.worksheets("集計").range("A65536").end(xlup).offset(1)   activeworkbook.close false   myfile = dir()  loop end sub ファイルメニューから終了してエクセルに戻る ALT+F8を押してマクロを実行する。

meimint213
質問者

お礼

keithinさん ありがとうございます!!! 試してみましたが、 「インデックスが有効範囲にありません」 と表示されてしまいます。 やはり★の部分の記載が間違っているのでしょうか。 初歩的な質問で申し訳ありません。 ★部分は、すべてのBOOKが入っているフォルダの場所ですよね? C:\Users\私の名前\Desktop\A\のような形で入れたのですが、間違いでしょうか。 (Aというフォルダがデスクトップにあり、その中にすべていれています(集計シートBOOKも含))。

meimint213
質問者

補足

ちなみにexcelのバージョンを誤って投稿していました! Excel2003だったのですが、 この場合は、 Xls*をXlsになおせばよいだけでいいでしょうか。

関連するQ&A