VBAを使用してCSVファイルを効率的に結合する方法
SHOGAKU
3 months ago
VBAを使用してCSVファイルを効率的に結合する方法
こんにちは!今回は、複数のCSVファイルを1つのExcelシートにまとめる方法をVBAを使って解説します。この方法は、大量のデータを扱う際に非常に便利です。
目的
- 指定フォルダ内の全CSVファイルを結合
- 結合したデータを新しいシートに貼り付け
- 1つ目のファイルのヘッダー情報を保持
完全なVBAコード
以下が、目的を達成するための完全なVBAコードです:
Sub CombineCSVFiles()
Dim folderPath As String
Dim fileName As String
Dim wb As Workbook
Dim ws As Worksheet
Dim destWs As Worksheet
Dim lastRow As Long
Dim fileNum As Integer
' "合体"シートを設定
Set ws = ThisWorkbook.Sheets("合体")
' "データまとめ"シートを設定(存在しない場合は作成)
On Error Resume Next
Set destWs = ThisWorkbook.Sheets("データまとめ")
On Error GoTo 0
If destWs Is Nothing Then
Set destWs = ThisWorkbook.Sheets.Add
destWs.Name = "データまとめ"
Else
destWs.Cells.Clear
End If
' フォルダパスを取得
folderPath = ws.Range("B2").Value
If Right(folderPath, 1) <> "\" Then folderPath = folderPath & "\"
' CSVファイルを処理
fileName = Dir(folderPath & "*.csv")
fileNum = 0
Do While fileName <> ""
fileNum = fileNum + 1
Set wb = Workbooks.Open(folderPath & fileName)
If fileNum = 1 Then
' 1つ目のファイルの場合、ヘッダー行をコピー
wb.Sheets(1).Rows(3).Copy Destination:=destWs.Rows(1)
lastRow = 1
End If
' データ行をコピー
lastRow = destWs.Cells(destWs.Rows.Count, "A").End(xlUp).Row
wb.Sheets(1).Range("A4:Z" & wb.Sheets(1).Cells(wb.Sheets(1).Rows.Count, "A").End(xlUp).Row).Copy _
Destination:=destWs.Cells(lastRow + 1, 1)
wb.Close SaveChanges:=False
fileName = Dir()
Loop
MsgBox "CSVファイルの合体が完了しました。", vbInformation
End Sub
使用方法
- Excelファイルに"合体"という名前のシートを作成します。
- "合体"シートのB2セルに、CSVファイルが格納されているフォルダパスを入力します。
- VBAエディタを開き、新しいモジュールに上記のコードを貼り付けます。
- マクロを実行します。
コードの説明
-
必要なシートの設定:
- "合体"シートから作業を開始
- "データまとめ"シートを作成または初期化
-
CSVファイルの処理:
- 指定されたフォルダ内のCSVファイルを順に開く
- 1つ目のファイルの3行目(ヘッダー)を結果シートの1行目にコピー
- 各ファイルの4行目以降のデータを結果シートに追加
-
結果の表示:
- すべてのファイルの処理が終わったら完了メッセージを表示
注意点
- CSVファイルは4行目からデータが始まることを前提としています。
- デフォルトでA列からZ列までのデータを処理します。必要に応じて範囲を調整してください。
- 既存の"データまとめ"シートがある場合、その内容は上書きされます。
まとめ
このVBAマクロを使用することで、大量のCSVファイルを簡単に1つのExcelシートにまとめることができます。データ分析や報告書作成の際の作業効率が大幅に向上するでしょう。
ぜひ試してみてください。質問やカスタマイズの要望があれば、コメントでお知らせください!
コメント
いいね
投げ銭
最新順
人気順
コメント
いいね
投げ銭
最新順
人気順