今回は 「スケジュールをConfigシートで管理する版」 と 「失敗時のみ通知する版」 を紹介します。
1. スケジュールをConfigシートで管理する版
Configシートに「実行時刻」を記載しておき、その時刻に自動で保存+通知を実行します。
※ Configシートの A1 に時刻(例: 07:30)を記載しておく前提。
Sub ScheduleFromConfig()
Dim wsConfig As Worksheet
Dim runTime As String
Set wsConfig = ThisWorkbook.Sheets("Config")
runTime = wsConfig.Range("A1").Value ' 実行時刻 (例: 07:30)
' OnTimeでスケジュール設定
Application.OnTime TimeValue(runTime), "SaveMergedAndNotifyWithAttachment", , True
MsgBox "スケジュール設定完了: " & runTime
End Sub
VBこれで、Configシートの時刻を変更するだけでスケジュールを柔軟に管理できます。
2. 失敗時のみ通知する版
保存処理や統合処理が失敗した場合のみ、通知メールを送信する例です。
Sub SaveMerged_NotifyOnFailure()
Dim wsMaster As Worksheet
Dim newWb As Workbook
Dim savePath As String, todayStr As String
Dim toAddr As String
Dim success As Boolean
Set wsMaster = ThisWorkbook.Sheets("Master")
' 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")
success = True
On Error GoTo SaveErr
' 新しいブックを作成
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
GoTo EndProc
SaveErr:
success = False
' 失敗時のみ通知
Call SendMailWithAttachment(toAddr, "[CSV統合失敗通知]", _
"統合結果の保存に失敗しました。" & vbCrLf & _
"保存先: " & savePath & vbCrLf & _
"日時: " & todayStr, "")
EndProc:
If success Then
MsgBox "統合結果を保存しました(通知なし)。"
Else
MsgBox "保存に失敗し、通知メールを送信しました。"
End If
End Sub
VB✅ まとめ
- スケジュールConfig管理版 → 実行時刻をシートで管理できるので、運用者が簡単に変更可能。
- 失敗時のみ通知版 → 成功時は通知不要、失敗時のみメール送信で運用負荷を軽減。

