• ベストアンサー

EXCELで複数のファイルから抽出

Excelのことで困っています。 何かいい方法があれば教えてください。 同じフォームのエクセルファイルが約1000ファイルあり、それぞれのファイルの例えば3~5行目だけを抽出し、別のの新しいファイルにどんどん貼り付けて3~5行目だけを集めたファイルを作りたいのですが、ファイルの数が多いので、全ファイルを開いてコピペする以外にマクロか何かを使って自動で抽出できるような方法がないかと考えております。 1000個のファイル名は今はばらばらですが、必要であれば0001.xls~1000.xlsなどに変更してもよいです。 どうぞよろしくお願いします。

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

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

抽出先のブックを同じフォルダに作成し、Alt+F11でVBAの画面を開き、左側のツリーからブック名を選択し、右クリックから「挿入」>「標準モジュール」を選択して、右の画面に以下のマクロをコピーして貼り付けてください。 Sub ファイルから抽出()  Dim FName As String  Dim Folder As String  Dim WB As Workbook  Dim i As Integer, j As Integer  Application.ScreenUpdating = False  Folder = ThisWorkbook.Path & "\"  i = 1: j = 1  Worksheets(1).Cells.ClearContents  FName = Dir(Folder & "*.xls")  Do While FName <> ""   If FName <> ThisWorkbook.Name Then    Workbooks.Open (Folder & FName)    Workbooks(Workbooks.Count).Worksheets(1).Rows("3:5").Copy _    ThisWorkbook.Worksheets(1).Cells(i, 1)    Workbooks(Workbooks.Count).Close    Application.StatusBar = j & "ファイル処理済み"    i = i + 3: j = j + 1   End If   FName = Dir()  Loop  Application.StatusBar = ""  Application.ScreenUpdating = True  MsgBox ("完了しました") End Sub Alt+F11でExcelの画面に戻ってAlt+F8からマクロを実行してみてください。各ファイルの3行目~5行目がコピーされます。 高速化のために処理中は描画を止めているので、全ての処理が終わった後に画面は表示されます。1000個もファイルがあるとかなり時間がかかると思いますが、何個のファイルを処理したかは左下に表示するようにしているので、ある程度目安になると思います。 あと、フォルダ内のブックを開いてはコピーして閉じ、ということを繰り返しているので、実行中はタスクバーがちらちらしますが、気にしないでください。

akikoiw
質問者

お礼

初心者の私には、大変わかりやすい説明でありがたかったです。 無事、抽出作業終了しました。大変助かりました。 ありがとうございました。

その他の回答 (2)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.3

エラー処理などはしていないので・・・。 対象のファイルとは別のフォルダにブックを作成して実行して下さい。 WorkPath にファイルのあるフォルダを設定して下さい。 Sub Tenki() Dim WorkPath As String Dim TMP As String Dim MaxRow As Long Application.ScreenUpdating = False WorkPath = "C:\パス名を記入" TMP = Dir(WorkPath & "\*.xls", vbNormal) MaxRow = 1 Do While TMP <> "" Workbooks.Open WorkPath & "\" & TMP Workbooks(TMP).Sheets("Sheet1").Rows("3:5").Copy _ ThisWorkbook.Sheets("Sheet1").Cells(MaxRow, 1) MaxRow = MaxRow + 3 Workbooks(TMP).Close SaveChanges:=False TMP = Dir() Loop MsgBox "転記が終了しました。" End Sub

akikoiw
質問者

お礼

とても参考になりました。 ありがとうございました。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>それぞれのファイルの例えば3~5行目だけを抽出し 特定のシートのみですか?それとも全てのシートから抽出するのでしょうか? そして、全てのデータを1枚のシートに貼付けるのですか?それとも同一名のシートに貼付けるのでしょうか?

akikoiw
質問者

補足

早速ありがとうございます。 sheet1からのみです。 1枚のシートに貼り付けたいです。 よろしくお願いします。

関連するQ&A

  • 多数のエクセルファイルからデータ抽出するマクロ

    一つのフォルダの中に 同じフォームのエクセルファイルが多数あり、 全エクセルファイル内のセルから値を抽出し、 別の新規エクセルファイルに次々と収集する方法はないでしょうか? コピペだと大変な作業なのでマクロで出来ないかと考えてます。 抽出元ファイルで 申し込み番号とIDの位置はA2,G1と決まっているのですが 合計税込金額はB列ですが表示行は変動します。 またその金額はSUM関数で表示されています。 それらを抽出したの新規エクセルファイルには マクロを実行した日付を自動で挿入されるようにしたいのですが 可能でしょうか? 完成イメージとして画像を添付しました。 どうかご教授頂けないでしょうか?

  • 複数Excelファイルの一括インポートしたい。

    複数Excelファイルがあります。(aaa.xls、bbb.xls・・・) 同フォルダ内にあるExcelファイル(20個ほど)を1つのファイルにしたいのですが、 手動コピペ以外の方法を教えていただけますでしょうか? できれば、マクロ、VBAでお願いします。 ワークシート名はすべて同じです。(Sheet1のみ取り込みたい(無理であれば他も取り込みしてもOK)) 1つのファイル内で横に並べるようにしたいです。(ファイル名か、Sheet1_1,Sheet1_2・・・) よろしくお願いします。

  • 複数のエクセルファイルからデータ抽出とまとめる方法について。

    500のエクセルファイルがあり、それぞれのエクセルデータのA2からF2までのデータのをまとめた一覧表(1行目は、1枚目のエクセルファイルのA2-F2、2行目は2枚目のエクセルファイルの・・・、という感じでです)のを、新しいエクセルファイルもしくはテキストなどにでも手早く作れる方法をご存知の方、ご教授ください。コピペでやっていますが嫌になってしまいました。。マクロも触っては見たのですが、2枚目のエクセルファイルを2行目に、3枚目のエクセルファイルを3行目になどの方法の解決は思いつかず、挫折しました。よろしくお願いいたします

  • エクセル フィルタで抽出したデータごとに別ファイルを作成したい(マクロ)

    エクセルのフィルタで抽出したデータをタイトル行ごとコピーし、別ファイルを作る、という作業が大量にあります。これをマクロ化したいのですが良い方法はありますか? 出来ればシートに抽出条件の名前を付けて、そのファイル名で保存、までできたらありがたいです。

  • エクセルの関数で複数抽出

    エクセルの関数を教えて欲しいです。 以下のような表が別ファイルであるとします。 【Aファイル】    【Bファイル】  A  B  C    A  B  C  D  E 1 商No 分No 名   1 商No 分No 名 売上 売数 2 23  11 あいう 2 1  2  あかさ 24000  12 3 55  34 かきく  3 2 4 いきし 67000  33 4 65  77 さしす 4 11 21  うくす 55700  65 ・ ・  ・  ・   ・ ・ ・   ・   ・   ・ ・ ・  ・  ・   ・ ・ ・   ・   ・  ・ ・ ・  ・  ・   ・ ・ ・   ・   ・  ・ Aファイルの商品Noと分類Noが一致するものを、Bファイルから検索し、行ごと別ファイルに抽出(複数)する関数を教えていただけないですか?。いろいろ検索して探しましたが、複数抽出する方法がわかりませんでした。よろしくお願いいたします。

  • エクセル:複数ブックをマクロを使い同一条件で集約・抽出したい

    教えて下さい 複数のエクセルブックがあります(全て1フォルダーに集約してある) それぞれA列に日付、B列に金額が入っている 複数あるブックを指定する日付で次から次へと検索しその金額とファイル名を新しいブックに縦に全てコピー(抽出)したい ちなみに、必ず条件にあうデータがそれぞれのブックにあるとは限りません 無い場合もあります 無い場合は特に抽出する必要はありません ========================================================= 例:2007/12のデータを抽出したい ★抽出結果イメージ    A      B    C 1 2007/12   200   ああああ.xls 2 2007/12   300   いいいい.xls 3 2007/12   100   うううう.xls 4   ・      ・      ・ 5   ・      ・      ・ 6   ・      ・      ・ 7   ・      ・      ・ ========================================================= このような場合、マクロでできますか?マクロは初心者です 教えてください よろしくお願いします 複数あるブックとは数的に60とかあります ちなみに現状はファイルを一つ一つ開き、指定日付を検索し見つけだし その行をコピーペーストしています たくさんブックがあるので、これをしていると目がチカチカしてきてしまいます この作業がマクロでできると、すごく感激なのですが・・・ どなたか、お知恵・お力をおかしくださいませ

  • VBA フィルターで抽出したデータを別のファイルの

    VBA フィルターで抽出したデータを別のファイルのシートのセルにヘッダー行とフッター行のあるシートに挿入したい お世話になります。 excel のフィルターで抽出したデータを別のファイルのシートに抽出したデータと同一フォーマットの入っている原紙がありその原紙をコピーしたシートのヘッダー行(A1-A8)の後、9行目からフッター行の手前、52行めまでに貼り付けするを、フィルターで抽出した分繰り返したいのです。原紙 のシートはコピペでしたに20枚ほど作ってあります。 マクロの記述でコピペを繰り返せば作れそうな気はしますが、汎用性が無いので、また私の頭も固いので。 宜しくお願いします。

  • EXCEL 別のファイルからシート抽出をしたい

    お世話になります。 業務上、毎日、EXCELファイルが作成されます。 (1.xls、2.xls、3.xls・・・というように、毎日段々と増えていきます) それとは別のEXCELファイルを一つ作成して、次のことをしたいと思っています。 ・1.xls、2.xls、3.xls・・・のように、複数あるファイルの中から、一つのファイル、シートを指定し、  シートの内容をそのまま抽出したい。(なお、抽出したいシートの名前は毎回違います) よろしくお願いします。

  • 複数のエクセルファイルとシートからデータ抽出したい

    すみませんが教えてください! 複数のエクセルファイルがあり、それぞれに複数のシートがあります。 (ファイルによってシート数は異なります) そのすべてのファイル/シートから、C列の最後の行のデータを抽出し、集計ファイルに書き出したいのです。 書き出しのフォーマットは3セル使用して、ファイル名、シート名、データとしたいです。 すみませんが、よろしくお願いいたします。

  • 複数のexcelファイルの置換について

    AAA.xlsというファイルの中の情報を複数のexcelファイル(A.xls、B.xls、C.xls、D.xls)でリンク付けしてあるとします。 AAA.xlsをBBB.xlsに名前を変更するとリンクが成り立たなくなってしまいます。 そこで、一括でリンクを変更する方法を教えてください。 マクロでもいいです。 =[AAA.xls]Sheet1!$A$1 これを =[BBB.xls]Sheet1!$A$1 に一括変更したいのです。 よろしくお願いします。

専門家に質問してみよう