今回は 「ログを日付ごとに別シートへ自動振り分ける版」 と 「通知メールにログ内容を添付する版」 を紹介します。
1. ログを日付ごとに別シートへ自動振り分ける版
ログを記録するときに、日付ごとに別シートを自動作成して振り分けます。
例: Log_2025-11-20 シートにその日のログを記録。
Sub LogResultByDate(ts As String, path As String, status As String)
Dim wsLog As Worksheet
Dim sheetName As String
Dim nextRow As Long
sheetName = "Log_" & Format(CDate(ts), "yyyy-mm-dd")
' シートが存在しなければ作成
On Error Resume Next
Set wsLog = ThisWorkbook.Sheets(sheetName)
If wsLog Is Nothing Then
Set wsLog = ThisWorkbook.Sheets.Add
wsLog.Name = sheetName
wsLog.Range("A1:C1").Value = Array("日時", "保存先", "ステータス")
End If
On Error GoTo 0
' 次の行にログ追加
nextRow = wsLog.Cells(wsLog.Rows.Count, "A").End(xlUp).Row + 1
wsLog.Cells(nextRow, 1).Value = ts
wsLog.Cells(nextRow, 2).Value = path
wsLog.Cells(nextRow, 3).Value = status
End Sub
VB利用例:
Call LogResultByDate(Now, "C:\Data\Output\MergedResult.xlsx", "SUCCESS")
VB2. 通知メールにログ内容を添付する版
保存完了後に、ログ内容を一時的にCSVファイルに書き出し、それをメールに添付して送信します。
Sub SaveMergedAndNotifyWithLogAttachment()
Dim wsMaster As Worksheet, wsLog As Worksheet
Dim newWb As Workbook
Dim savePath As String, logPath As String, todayStr As String
Dim toAddr As String
Set wsMaster = ThisWorkbook.Sheets("Master")
Set wsLog = ThisWorkbook.Sheets("Log")
' Configシートから保存先と宛先を取得
Dim wsConfig As Worksheet
Set wsConfig = ThisWorkbook.Sheets("Config")
savePath = wsConfig.Range("B1").Value ' 保存先パス
toAddr = wsConfig.Range("B2").Value ' 宛先メールアドレス
todayStr = Format(Now, "yyyy-mm-dd HH:NN:SS")
' 新しいブックを作成して保存
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
' ログをCSVに書き出し
logPath = Environ("USERPROFILE") & "\Desktop\LogExport.csv"
wsLog.Copy
ActiveWorkbook.SaveAs Filename:=logPath, FileFormat:=xlCSVUTF8
ActiveWorkbook.Close SaveChanges:=False
' 通知メール(保存ファイル+ログCSV添付)
Call SendMailWithAttachment(toAddr, "[CSV統合完了通知]", _
"統合結果を保存しました。" & vbCrLf & _
"保存先: " & savePath & vbCrLf & _
"日時: " & todayStr & vbCrLf & _
"ログを添付しました。", logPath)
MsgBox "統合結果を保存し、ログ付き通知メールを送信しました。"
End Sub
VB✅ まとめ
- 日付ごとに別シート振り分け版 → ログを日別に整理できるので、履歴管理が容易。
- ログ添付通知版 → 保存結果とログをメールで共有できるので、監視や報告に便利。

