• ベストアンサー

複数のエクセルファイルを1つにまとめたい

定型書式のエクセルデータが数百あります。 その複数のファイルを1ファイルにまとめたいのです。 コピー&ペーストを繰り返すのではなく、簡単にできる方法がありますでしょうか。 よろしくお願いいたします。

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

  • ベストアンサー
  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.3

>実際の作業ファイルのシート名にしようと試みました。 マクロ文中の"Sheet1"を全て実際のシート名(例えば"data form")へ置き換えたのですが これは、数百あるデータが、"data form"のシートに有るとすれば、 >file_name = Dir(m & "*.xls") Do While file_name <> "" If file_name <> m_file_name Then Workbooks.Open Filename:=m & file_name この下部分のコード ' Sheets("Sheet1").Select を Sheets("data form").Select に変えてください。 その下にある11ヶ所のm_file.Sheets("Sheet1").はまとめ用のファイルのシートを指定しています。 また、一番左端にあるシートを指定したい場合は、Sheets(1)のように、括弧の中は数字の1になります。 でわ、よろしく

hyahya
質問者

お礼

何度もありがとうございます。できました! これで月曜日の仕事のめどがつきました。 本当にありがとうございました。 これを機会に、マクロを勉強したいと思います。 (まずは簡単なものから・・・)

その他の回答 (2)

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.2

こんにちわ、これで如何ですか。 各ファイルのシート"Sheet1"にデータがあります。 Sub file_sam() Application.ScreenUpdating = False Dim file_name Dim m_file_name As String Dim j As Long Dim m_file As Workbook Dim m As String Set m_file = ThisWorkbook m_file_name = ThisWorkbook.Name j = 2 m = "C:\Exle_Data\" 'C:\Exle_Data\を実際のフォルダに変えてください。 file_name = Dir(m & "*.xls") Do While file_name <> "" If file_name <> m_file_name Then Workbooks.Open Filename:=m & file_name ' Sheets("Sheet1").Select m_file.Sheets("Sheet1").Range("A" & j) = j - 1 m_file.Sheets("Sheet1").Range("B" & j) = Range("D3") m_file.Sheets("Sheet1").Range("C" & j) = Range("D4") m_file.Sheets("Sheet1").Range("D" & j) = Range("D5") m_file.Sheets("Sheet1").Range("E" & j) = Range("D6") m_file.Sheets("Sheet1").Range("F" & j) = Range("D7") m_file.Sheets("Sheet1").Range("G" & j) = Range("J4") m_file.Sheets("Sheet1").Range("H" & j) = Range("J5") m_file.Sheets("Sheet1").Range("I" & j) = Range("J6") m_file.Sheets("Sheet1").Range("J" & j) = Range("J7") m_file.Sheets("Sheet1").Range("K" & j) = file_name file_name = Dir j = j + 1 Application.DisplayAlerts = False ActiveWindow.Close Application.DisplayAlerts = True Else file_name = Dir End If Loop End Sub

hyahya
質問者

お礼

書いていただいたマクロ文をそっくり貼り付けたところ、うまく動作しました!ありがとうございます。 重ねての質問で恐縮ですが、実際の作業ファイルのシート名にしようと試みました。 マクロ文中の"Sheet1"を全て実際のシート名(例えば"data form")へ置き換えたのですが、『実行時エラー'9':インデックスが有効範囲にありません』となります。 もしかしたらシート"名"は関係なく、一番左端にあるシートが"Sheet1"と定義されるのでしょうか?(それも変か・・・) すでにお気づきだと思いますが、マクロを触ったのは、今回が初めてです・・・ お時間ありましたら、再度アドバイスをいただけますでしょうか。 よろしくお願いいたします。

  • Tibian
  • ベストアンサー率15% (30/188)
回答No.1

DBでやるのがベストだと思います。 その結果をエクセルから取り込みます。

hyahya
質問者

お礼

早速回答をいただき、ありがとうございます。 実は、EXCEL初心者なもので・・・DBというのは何になりますでしょうか?(Data Baseしか思いつきません)

関連するQ&A