• ベストアンサー

複数ファイルから特定シートのコピー

同じフォルダ内に、エクセルファイルがいくつかあります。 そのフォルダ内のファイルから、特定のシート名(例:シートA)のシートをコピーしシートAだけの新しいファイルとして作成しようと思います。 シートAを含むファイルは複数あります。 何か方法がありましたらご教授お願いいたします。

noname#74087
noname#74087

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

  • ベストアンサー
  • keirika
  • ベストアンサー率42% (279/658)
回答No.2

取りまとめるブック名を『統合.xls』とします。 Sub Sample() On Error Resume Next Dim TSheet As String TSheet = Dir(ThisWorkbook.Path & "\*.xls", vbNormal) Do While TSheet <> "" If TSheet <> "統合.xls" Then Workbooks.Open (ThisWorkbook.Path & "\" & TSheet) ActiveWorkbook.Sheets("シートA").Copy after:= _ Workbooks("統合.xls").Sheets(1) Workbooks(TSheet).Close End If TSheet = Dir() Loop End Sub 必要な箇所は適宜変更して下さい。 また、実行する際はフォルダのバックアップは必ず取ってください。 元ファイルは開くだけなので壊すことは無いと思いますが念の為です。

noname#74087
質問者

お礼

keirikaさん、どうもありがとうございます。 望んでいたものとドンピシャです!

その他の回答 (1)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

良くある質問と思いますが、この質問タイトルは、後々他の方の役に立つ良い名前の付け方ですね。 方法1:人力で地道に行う 方法2:マクロで行う 過去に回答したコードを、特定の名前のシートだけコピーする様に変更しました。同じ名前のシートを複数コピーするので、ファイル名に付け替えています。新しいブックにではなく、このマクロのあるブックに収集します。XL2000のコードです。 Sub treatAllFiles() Dim FSO As Object Dim folderName As String Dim targetFolder As Object Dim targetFiles As Object Dim targetFile As Object Dim sh As Worksheet 'フォルダー名は環境に合わせる事 folderName = "C:\Documents and Settings\?????\My Documents\" Set FSO = CreateObject("Scripting.FileSystemObject") Set targetFolder = FSO.getfolder(folderName) Set targetFiles = targetFolder.Files For Each targetFile In targetFiles DoEvents '途中でやめたくなった時のための保険 If UCase(Right(targetFile, 4)) = ".XLS" Then Application.Workbooks.Open Filename:=targetFile, UpdateLinks:=False For Each sh In Application.ActiveWorkbook.Worksheets If sh.Name = "特定のシート名" Then sh.Copy Before:=ThisWorkbook.Sheets(1) ActiveSheet.Name = FSO.GetBaseName(targetFile) End If Next Windows(FSO.GetFileName(targetFile)).Activate Call ActiveWorkbook.Close(savechanges:=False) End If Next targetFile End Sub

noname#74087
質問者

お礼

mitarashiさん 希望していた通りの結果になりました。 ありがとうございます! タイトルをお褒めいただき恐縮です。

関連するQ&A

  • 複数シートから特定シートを読み込む

    VBA初心者です。 ある特定のフォルダに入っている複数のファイルから、指定したシート名のシートだけコピーする方法はあるのでしょうか? ちなみに、フォルダに入っているファイルは全て指定したシートを読み込みたいと思ってます。

  • VBA_フォルダ内複数のExcelファイルの集約

    Excel VBAに関する質問です。 特定のフォルダ内(例としてC:\folder1)の複数のExcelファイルにおける シート(例としてSheet1)内のセル範囲A2:I1000の情報をコピーし、 特定のフォルダ内に格納されたExcelファイル(例としてC:\tougou\tougou.xls)の シート(例としてTOUGOU)内のA2を起点に貼り付け処理をしたいのですが、可能でしょうか? <貼り付けイメージ> (例)特定のフォルダ内(例としてC:\folder1)のExcelファイル数が2つの場合 A2 B2 ・・・・・I2 ・ ・ ・ ・ ・ A1999・・・・・・I1999 A2~I1999の範囲にデータが集約される。 どうぞよろしくお願いいたします。

  • フォルダに入っている複数のファイルをコピーしたい。

    エクセルなのですが、 1つのフォルダに入っている複数のエクセルファイルを 1つのエクセルファイルに(下に付け加えて)まとめたいと思っています。 このようなことをやりたいと思っているのですが、 お力をお貸ししていただけないでしょうか? どのシートも形式は同じなのですが、 1つのエクセルファイルに複数のBookがある場合もあります。 中身としてはA~Z列まであり、また行についてはそれぞれのシートによって異なります。 そして、どのシートに対しても1~3行についてはタイトル等が書いてありますので、 4行目以降でデータが入っているところまで、同じフォルダに用意したファイルに 順番にコピーしていきたいと思っています。 色々と試してみたのですが、どうしても複数のファイルから取り出してくることができなくて、 すみませんがよろしくお願します。

  • 複数ファイルの特定のセルをコピーして1つにまとめる

    1つのフォルダ内の複数のファイル(Sheet1のみ)から、 特定のセルをコピーして、1つのファイルにまとめたいと 思っています。 変数  wkb 複数のファイル  myb 自分のファイル (1) wkb.Sheets("Sheet1").Range("A1:D5").Copy myb.Sheets("統合").Cells(i, "A").PasteSpecial Paste:=xlPasteValues このように書いた場合、うまくいくのですが (2) wkb.Sheets("Sheet1").Range(Cells(1, 1), Cells(5, 5)).Copy myb.Sheets("統合").Cells(i, "A").PasteSpecial Paste:=xlPasteValues このように書くと、1004でエラーとなります。 本来は、Sheet1の1行目から5行目までの中で、値がある行まで コピーしたいので、(つまり1~3行目のときもあれば、1行目だけの ときもある。)(2)の方法で実行したいのです。 なんとかいい方法はないでしょうか?

  • VBAで複数のフォルダから最新のファイルを検索してコピーするには?

    はじめましてこんにちは!エクセルを少しいじり始めた者です。 エクセルのVBAで複数のフォルダから最新更新日のファイルを検索して特定シートのセルD1からF20までをコピーして貼り付けるにはどのようにコードを書いたらいいのでしょうか?具体的に申し上げますと、ある特定のフォルダの中に複数のフォルダが入っており、複数のフォルダにはそれぞれ同じ名前の後に日付が入っていて、さらにその中には同じファイル名の後に日付が付いているファイルがあります。(「日本」フォルダの中に「日本200401」、「日本200402」、「日本200403」フォルダが入っていてさらにそれぞれのフォルダ内には「全国200401」」、「全国200402」、「全国200403」みたいな感じでフォルダ名と同じ日付が付いたファイルが入っています。) その複数のフォルダの中から最新更新日時のファイルだけを開いて特定のシートからデータをコピーして貼り付けるにはどのようにコードを記述したら良いのでしょうか?

  • 複数のEXCELファイルの特定セルを別ファイルへコピーする

    EXCELで作った見積書のセル内容を自動的に集めて、見積り一覧表を作りたいなと考えています。 見積書は1見積り1ファイル(シートは複数ありますが1枚目のシートが対象)になっていて、 各ファイルの1枚目のシートの特定セル内容(日付、相手先、件名、金額など)を 見積り一覧表として作成したEXCELシートへ順次コピーしたく思います。 動作イメージは 1.見積り一覧表を開いてボタンを押す等してマクロを起動。 2.同一フォルダー内の自分を除く全EXCELファイルを順次開きセル内容を一覧表へコピー。 3.全てのEXCELファイルを処理したら終了・・・。 発展系として、 ・日付条件で対象EXCELファイルを絞り込む。 ・特定セルに値が入っていなかったら(関係ないEXCELファイル)スキップ。 あとは一覧表が出来た後のソートくらいでしょうか。 まずは基本的な「自動的に複数EXCELを開いて特定セル内容をコピーする」のヒントがほしく思います。 なお、自動処理対象としたいEXCEL見積りファイルは約500本ほどです。 関連情報等ご存知でしたらお教えください。 よろしくお願いいたします。

  • 複数のエクセルファイルを1つのエクセルファイルのシートにコピーをマクロ

    複数のエクセルファイルを1つのエクセルファイルのシートにコピーをマクロで行いたい。 マイドキュメントのデーターというフォルダ内に エクセルファイルA(シート名みかん) エクセルファイルB(シート名りんご) エクセルファイルC(シート名バナナ) エクセルファイルD(シート名ぶどう) エクセルファイルE(シート名いちご) があります。 雛形は同じです。すべてA列~F列までデータが入っています。 行数はファイルによって違います。 また毎日自動で上書き更新され、毎日行数が変わります。 エクセルファイルZがあります。シートが7個あります。 ・変換 ・集計 ・みかん ・りんご ・バナナ ・ぶどう ・いちご エクセルファイルZを開きます。(各シートには昨日のデータが貼り付けてあります。) マイドキュメントのデーターフォルダも開いておきます。 エクセルファイルZにおいて「マクロの記録」を起動。 エクセルファイルZの 【みかん】~【いちご】までの5シートを全データDELETEします。 開いてあるフォルダ「データー」の中からエクセルファイルAを開きます。 (タスクバーにいます) ファイルAのシート【みかん】の全データ選択して エクセルファイルZの【みかん】というシートのA1セルにカーソルを あわせて貼り付けします。 開いてあるフォルダ「データー」の中からエクセルファイルBを開きます。 (タスクバーにいます) ファイルBのシート【りんご】の全データ選択して エクセルファイルZの【りんご】というシートのA1セルにカーソルを あわせて貼り付けします。 これと同じ操作を【バナナ】【ぶどう】【いちご】も行います。 エクセルファイルZにおいて「マクロの記録」を終了させます。 マクロができあがりました。 ファイルZを上書き保存して終了。再立ち上げで記録したマクロを実行。 エラーにはなりませんが、ファイルZの5種類各シートに ファイルA~Eのデータが貼りつきません。 何か無理な事をしているのでしょうか? もしかしてシート名が同じだと駄目?とためしにファイルZのシート名【みかん】~【いちご】を 【みかんZ】~【いちごZ】に変更してマクロを再記録しても 駄目でした。 よろしくお願いします。

  • 複数のシートを別々のエクセルへコピー

    エクセルの中に複数のシートがあり それを別々の新規ファイルにコピー(保存)したいのですが、 1シートずつ作成していくしかないのでしょうか? (ひとつにまとまっているシートを別々のファイルにしたいのです。) お解りの方いらっしゃったら是非教えて下さい。 宜しくお願い致します。

  • エクセルVBAをつかってフォルダ内のファイルの特定シートのデータを1つのシートにまとめる

    はじめまして。 過去ログ検索しましたが、載っていないようなので投稿させていただきます。 ブックAがあるフォルダ内にある「○年*.xls」のさらに「○月(○月以外のシートもあり)」のシート内の特定のセル(範囲は固定されてます)の文字列を、全てブックAの1つのシートにまとめたいのですが、VBAにてこれは可能ですか? フォルダ内のファイルが複数だったり、またそのファイル内の該当シートが1つだったり複数だったりで、かなり行き詰ってます。 どなたかご存知の方いらっしゃいましたらご教授願います。 エクセル2000を使用しております。

  • エクセルのマクロでファイルのシート名一覧を取得したい

    特定フォルダ内にエクセルのファイルが複数あります。 エクセルのファイル名の取得は「Filesearch」を使い取得出来ました。 更にそのファイルの中にあるシート名を取得し、シート名の一覧を ワークシートに貼り付けたいと考えています。 よろしくご教授ください。

専門家に質問してみよう