Excel VBA | 実務用 VBA コード集(テンプレ付き)

Excel VBA VBA
スポンサーリンク

タスクスケジューラ連携:成功時にも通知(メール送信・イベントログ情報)拡張版

これまで「エラー時の通知」を組み込みましたが、成功時にも通知を追加すると「成功/失敗の両方を監視」できる完全運用テンプレートになります。


成功通知メール送信(CDO.Message)

Sub SendSuccessMail(successMsg As String)
    Dim objMsg As Object
    Dim objConf As Object
    
    Set objMsg = CreateObject("CDO.Message")
    Set objConf = CreateObject("CDO.Configuration")
    
    ' SMTP設定(例:Office365)
    objConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    objConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.office365.com"
    objConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587
    objConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    objConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
    objConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "your_account@domain.com"
    objConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "your_password"
    objConf.Fields.Update
    
    With objMsg
        Set .Configuration = objConf
        .From = "your_account@domain.com"
        .To = "admin@domain.com"
        .Subject = "【VBAタスク成功通知】"
        .TextBody = "処理が正常終了しました: " & vbCrLf & successMsg
        .Send
    End With
End Sub
VB

成功通知をイベントログに記録

Sub WriteSuccessEvent(successMsg As String)
    Dim wsh As Object
    Set wsh = CreateObject("WScript.Shell")
    
    ' Applicationログに情報として記録
    wsh.LogEvent 4, "VBAタスク成功: " & successMsg
End Sub
VB

👉 LogEvent の第一引数はイベント種別

  • 0 = 成功
  • 1 = エラー
  • 2 = 警告
  • 4 = 情報

成功/失敗両方を統合した運用例

Sub AutoRun()
    On Error GoTo ErrHandler
    
    ' ▼業務処理
    Range("A1").Value = "Hello VBA!"
    
    ' 成功時通知
    Dim successMsg As String
    successMsg = "処理が正常終了しました(日時: " & Format(Now, "yyyy/mm/dd hh:nn:ss") & ")"
    
    WriteLogMonthly successMsg
    SendSuccessMail successMsg
    WriteSuccessEvent successMsg
    
    Exit Sub
    
ErrHandler:
    Dim errMsg As String
    errMsg = "ErrNumber: " & Err.Number & " / " & Err.Description
    
    WriteLogMonthly "エラー発生: " & errMsg
    SendErrorMail errMsg
    WriteErrorEvent errMsg
End Sub
VB

実務でのメリット

  • 成功/失敗の両方を通知 → 管理者は「動いたかどうか」を確実に把握できる
  • メール+イベントログの二重通知 → 見逃し防止
  • ログファイルにも記録 → 後から履歴を追跡可能

✅ まとめ

  • 成功時通知を追加することで「成功/失敗の両方を監視」可能
  • メール通知+イベントログ+ファイルログの三重管理で安心運用
  • タスクスケジューラと組み合わせれば「完全自動監視システム」が構築できる
タイトルとURLをコピーしました