• ベストアンサー

複数のエクセルを1つのエクセルに

複数のエクセルを1つのエクセルにしたいです。 また、1つのシートにそれぞれのエクセルファイルを追記でまとめたいです。 どのエクセルファイルも1行目はタイトル行となっています。 エクセルのファイル名は変えても問題ありません。 これはマクロで可能でしょうか? 他の方法がありましたら、教えてください。 よろしくお願いします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 時々、出てくる質問のような気がします。物理的なメモリの余裕などを度外視すれば、以下のようなコードで可能です。 ファイルを選択する時は、Ctrl キーを押しながら複数選ぶか、Shiftキーを押しながらファイルを複数選びます。コピーされたシート名は、一応、ファイルのベース名(.xlsの拡張子を取ったもの)とシート番号が付きます。 なお、統合ファイルは、最後に保存する時に、ファイル名を聞いてきますから、『拡張子を入れず』名前をつけてください。そして、このマクロを登録したブックのフォルダに作成されます。 なお、プロテクトされたブックは、選択しないでください。今のところ、その処理をしておりません。一応、何度も試験はしてみたものの、まだ、不具合があるかもしれませんから、何度かテストしてみてから本番に掛かってください。また、あまり巨大になるようでしたら、マクロの途中で不具合を起こすかもしれません。 'なるべく標準モジュールに登録してください '------------------------------------ Sub BooksUnifying()   Dim FileNames As Variant   Dim fn As Variant   Dim i As Long   Dim j As Long   Dim NewBook As Workbook   Dim SheetsCount As Integer   Dim NewBookName As String   Dim buf As String   On Error Resume Next   'Ctrl キーを押しながらファイルを選ぶか、または、Shiftキーを押しながらファイルを選ぶ   FileNames = Application.GetOpenFilename( _   "Excel(*.xls),*.xls", Title:="ファイル選択", MultiSelect:=True)   If VarType(FileNames) = vbBoolean Then Exit Sub     SheetsCount = Application.SheetsInNewWorkbook   Application.SheetsInNewWorkbook = 1     Set NewBook = Workbooks.Add     On Error Resume Next   Application.ScreenUpdating = False   For Each fn In FileNames    With Workbooks.Open(fn, ReadOnly:=True)      For i = 1 To .Worksheets.Count       If WorksheetFunction.CountA(.Worksheets(i).Cells) > 0 Then         If j > 0 Then          NewBook.Worksheets.Add After:=NewBook.Sheets(j)         End If                 .Worksheets(i).Cells.Copy NewBook.ActiveSheet.Range("A1")         buf = Replace$(fn, Left$(fn, InStrRev(fn, "\")), "")         buf = Mid$(buf, 1, InStr(buf, ".") - 1)         NewBook.ActiveSheet.Name = buf & "-" & i         j = j + 1       End If      Next i      .Close False    End With   Next fn   Application.ScreenUpdating = True   NewBookName = Application.InputBox("新規ブック名を付けてください。", Title:="新規ブック名", Type:=2)   If NewBookName <> "False" And NewBookName <> "" Then    NewBookName = Replace$(NewBookName, ".xls", "", , , vbTextCompare)    NewBook.SaveAs ThisWorkbook.Path & "\" & NewBookName   End If   Set NewBook = Nothing   ThisWorkbook.Activate   Application.SheetsInNewWorkbook = SheetsCount End Sub

tec_info
質問者

お礼

No.1さん、回答ありがございます。 教えてくれたマクロで僕が思っていたとおりに出来ました。 どうも有難うございます。うれしい限りです。

関連するQ&A

  • エクセルの複数、複数シートを一つにする

    エクセルの複数のシートを一つにしたいと思います。 それぞれのタイトルは若干順序や内容がちがいます。 どうもミスが多いので、ミスなく早く一つにできる方法はありませんか。 また、複数のよく似たエクセルを一つにする場合は、 一つのエクセルにシート別にして、複数シートから1シートにする方法が早いでしょうか。 マクロなどは使えないので、力技の方法とミスを少なくする方法をご紹介いただけるとたすかります。

  • 複数のエクセルを一つに貼り付け

    複数のエクセルファイルを一つのエクセルファイルの中のシートに マクロを利用してデータを貼り付ける方法はありますでしょうか? 実績表というフォルダ内に、下記のエクセルファイルがあります。 ・貼付け元のエクセルファイル名:実績表+3桁数値 →10ファイル ・1つに集計したいエクセルファイル名:実績表  ※その中に、貼付け元のファイル名と同じシート名が10シートあります。 できれば、「値の貼付け」でなはく、数式も含めた状態のデータを貼付けしたい。 是非、マクロのコードを教えていただきたく、宜しくお願い致します。

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

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

  • 複数のEXCELファイルより一部の行を自動でマージするマクロ

    「(1)複数のEXCELファイル」より、「(2)特定のシート」の中のさらに「(3)特定の行」をコピーし、あるEXCELファイルの1シートに挿入していくマクロ(VBA)か、ソフトが掲載されているサイト、もしくは、やりかたを教えてください。 1.EXCELは、2003 2.「(1)複数のEXCELファイル」は、一つのフォルダにあり、データ形式は一緒。  そのフォルダにはEXCELファイルしか置きません。 3.「(2)特定のシート」について、シート名はどれも一部のみ一致します。  または位置(順番)は一緒です。 4.「(3)特定の行」はどのファイルも作りが一緒です。 VBA初心者ですが、ヒントをいただければ頑張りたいと考えています。

  • 複数のExcelファイルをまとめる方法

    複数のExcelファイルを1つのExcelファイルにまとめる方法(ソフト)を教えてください。 まとめる際に1ファイルが1シートになるようにまとめたいのです。 つまり5つのファイルがある場合、5つのシートにしたいのです。 コピー&ペーストで頑張ればできますが、自動でできるフリーソフトかマクロがないか探しています。

  • 複数のエクセルシートの表をひとつにまとめたい。

    複数のエクセルシートの表をひとつにまとめたい。 複数のエクセルシートにある表を、1つのシートにまとめたいのですが、いい方法はありますか? マクロは使い方がわからないので、簡単な方法があると助かります。

  • 複数のExcelを1つのExcelに

    Excel.xlsの1シート目に、フィールドとデータが入っています。このExcelが担当者ごと複数存在します。 複数のExcelを1フォルダにまとめ、1行目はフィールド・あとは全てデータとして、1つのExcelブックの1シートへまとめることは可能でしょうか? フィールドは38列、行数はブックごと異なり、ブック名も担当者ごと異なります。 いろいろ調べたのですが、VBA初心者の為、VBAを貼り付けて実行してもうまくいきませんでした。 できれば、元ファイルは消さないよう、コピーのみ行いたいと思っています。 フォルダ名は C:\出庫依頼書 です。 どなたかご教授いただけませんでしょうか。

  • Excelの複数のシートを一つのシートに結合したい

    一つのエクセルファイルに複数のシートがあります。 このシートを一つのシートにまとめる効率の良い方法を教えてください。 なお、私は、マクロ等の使用方法がわからないため、マクロでご回答 される場合は、お手数ですが、手順を記載してください。 宜しくお願い致します。

  • 複数のエクセルファイルのデータを新規のファイルで一覧表にまとめるには?

    1つのホルダーの中に1000のエクセルファイルがあり、これらのファイルには、複数のシートがあります。これら1000のファイルから指定するシート(シートの様式とシート名は同じ)のデータ(C5:C17)を一覧表にまとめたいのです。 1000のエクセルファイル名は、○_■(○:個別、■:共通)で、一覧表は新たなエクセルファイルを作成し、1行目は左(A1)から順に、○(ファイル名の個別の部分)、C5のデータ、C6のデータ..C17のデータを  2行目には次のエクセルファイルの○(ファイル名の個別の部分)、C5のデータ、C6のデータ..C17のデータを ・・ と1000ファイルのデータをコピー&ペーストしたく、マクロ作りに挑戦したのですが、うまくいきません。どなたか助けてください。よろしくお願いいたします。

  • シートを複数持つExcelファイルを複数ファイル結合する方法

    シートを複数持つExcelファイルを複数ファイル結合する方法 ○○○工事・▲▲▲工事・■×○工事・・・・と複数のEXCELファイルが有り そのファイルの中には共通してA・B・C・D・・・・シートがあります。 各EXCELファイルの同じ名前のシートを取り出して1つのファイルにしたいと思っています。 1つのファイルにした時、各シート名が抜き出したファイル名になるようにしたいです。 50ファイル以上ありシート数が20ある為、なんとかいい方法をお教え下さい。

専門家に質問してみよう