電子書籍の厳選無料作品が豊富!

フォルダ内に100ほどのCSVファイルがあります。
書式は全部同じ。
新規のファイルに1つにまとめたい。

最初、フォルダ内のファイルに同じ処理をする方法で
ネットに載っているExcel VBAでうまくいきました。
フォルダ内のファイルを全て開き処理、その後1つにまとめる。
上記ですと、まとめるファイルの数が多いとファイルを全部開くので
処理不可能になる。

やるたいこと:フォルダ内の全てのCSVを1ファイルごと開いて処理後閉じて
新規のファイルへまとめる方法を教えてください。
前処理のVBAでフォルダ内のEXCELファイルをCSVに変換させています。
その後CSVファイルを新規のファイルにまとめたい。
下記の方法は、フォルダ内のファイルを全部開く方法です。
出来ずに本当に困っています。
ご教授よろしくお願いします。

Dim b As Workbook '集計するブック
Dim b1 As Workbook '集計先のブック

Dim d '集計するブック内のシートのデータ数
Dim d1 '集計先のシートのデータ数

Workbooks.Add
Set b1 = ActiveWorkbook

For Each b In Workbooks

If b.Name <> b1.Name Then
Dim l As Long
For l = 1 To b.Worksheets.Count

d = b.Worksheets(l).Range("a" & Rows.Count).End(xlUp).Row
d1 = b1.Worksheets(1).Range("a" & Rows.Count).End(xlUp).Row

b.Worksheets(l).Rows("1:" & d).Copy b1.Worksheets(1).Range("a" & d1 + 1)
Next
End If

Next

ActiveWorkbook.SaveAs "\C:処理済フォルダ\処理.csv"

A 回答 (2件)

直接の回答ではありませんが、バッチファイルでまとめる方法です。


以下のバッチファイルを作成します。(allcsv.batとします)
-------------------------------------------------
@echo OFF
rem ファイル名の一覧を取得
for %%X in (*.csv) do (
type %%X >> out.txt
)
---------------------------------
このallcsv.batを該当のフォルダ内に置いて起動します。
そうすると、全てのCSVファイルの内容を画面に表示しますので、それをリダイレクトします。
コマンドプロンプトで該当のフォルダ内に移動し
allcsv.bat > c:\xxx\all.csv
とするとc:\xxxにall.csvが作成されます。(all.csvは全てのCSVファイルをまとめたもの)
c:\xxxは任意のフォルダですが、該当のフォルダ以外を指定したほうが良いでしょう。
    • good
    • 0

dirとcopy +で結合するという手は?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!