Excel VBA | フォルダ内の全 CSV を 1 枚の Excel に統合するテンプレート

Excel VBA VBA
スポンサーリンク

今回は 「保存先フォルダをConfigシートで指定する版」「自動で世代フォルダを作成して保存する版」 を紹介します。


1. 保存先フォルダをConfigシートで指定する版

Configシートに保存先フォルダを記載しておき、そこへ統合結果を保存する例です。
※ Configシートのセル A1 に保存先フォルダパスを記載しておく前提。

Sub SaveMergedToConfigFolder()
    Dim wsMaster As Worksheet, wsConfig As Worksheet
    Dim newWb As Workbook
    Dim savePath As String, folderPath As String
    Dim todayStr As String
    
    Set wsMaster = ThisWorkbook.Sheets("Master")
    Set wsConfig = ThisWorkbook.Sheets("Config")
    
    ' ConfigシートのA1に保存先フォルダパスを記載しておく
    folderPath = wsConfig.Range("A1").Value
    If Right(folderPath, 1) <> "\" Then folderPath = folderPath & "\"
    
    todayStr = Format(Now, "yyyy-mm-dd")
    savePath = folderPath & "MergedResult_" & todayStr & ".xlsx"
    
    ' 新しいブックを作成
    Set newWb = Workbooks.Add
    wsMaster.UsedRange.Copy newWb.Sheets(1).Cells(1, 1)
    
    Application.DisplayAlerts = False
    newWb.SaveAs Filename:=savePath, FileFormat:=xlOpenXMLWorkbook
    Application.DisplayAlerts = True
    
    newWb.Close SaveChanges:=False
    
    MsgBox "統合結果を保存しました: " & savePath
End Sub
VB

2. 自動で世代フォルダを作成して保存する版

保存時に「日付ごとの世代フォルダ」を自動作成し、その中に保存する例です。
例: C:\Data\Output\2025-11-20\MergedResult.xlsx

Sub SaveMergedToGenerationFolder()
    Dim wsMaster As Worksheet
    Dim newWb As Workbook
    Dim baseFolder As String, genFolder As String, savePath As String
    Dim todayStr As String
    
    Set wsMaster = ThisWorkbook.Sheets("Master")
    
    ' ベースフォルダ(固定)
    baseFolder = "C:\Data\Output\"
    If Right(baseFolder, 1) <> "\" Then baseFolder = baseFolder & "\"
    
    ' 日付ごとの世代フォルダを作成
    todayStr = Format(Now, "yyyy-mm-dd")
    genFolder = baseFolder & todayStr & "\"
    
    If Dir(genFolder, vbDirectory) = "" Then
        MkDir genFolder
    End If
    
    savePath = genFolder & "MergedResult.xlsx"
    
    ' 新しいブックを作成
    Set newWb = Workbooks.Add
    wsMaster.UsedRange.Copy newWb.Sheets(1).Cells(1, 1)
    
    Application.DisplayAlerts = False
    newWb.SaveAs Filename:=savePath, FileFormat:=xlOpenXMLWorkbook
    Application.DisplayAlerts = True
    
    newWb.Close SaveChanges:=False
    
    MsgBox "統合結果を保存しました: " & savePath
End Sub
VB

✅ まとめ

  • Configシート指定版 → 保存先フォルダを外部管理できるので、柔軟に変更可能。
  • 世代フォルダ作成版 → 日付ごとにフォルダを自動生成し、世代管理が容易。
VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました