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

Excel VBA VBA
スポンサーリンク

VBA 通知メール拡張版(HTMLメールで見やすくする)

これまでの通知は テキストメール でしたが、HTML形式にすると 見出し・色・表形式 を使えて、管理者が一目で状況を把握できます。以下は「成功/失敗通知をHTMLメールで送る」拡張版です。


HTMLメール送信サンプル(CDO.Message)

Option Explicit

'=== HTMLメール送信(成功通知) ===
Sub SendSuccessMailHTML(successMsg As String)
    Dim objMsg As Object
    Dim objConf As Object
    
    Set objMsg = CreateObject("CDO.Message")
    Set objConf = CreateObject("CDO.Configuration")
    
    ' SMTP設定(例:Office365)
    With objConf.Fields
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.office365.com"
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "your_account@domain.com"
        .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "your_password"
        .Update
    End With
    
    With objMsg
        Set .Configuration = objConf
        .From = "your_account@domain.com"
        .To = "admin@domain.com"
        .Subject = "【VBAタスク成功通知】"
        
        ' HTML本文
        .HTMLBody = _
            "<html><body>" & _
            "<h2 style='color:green;'>✅ VBAタスク成功通知</h2>" & _
            "<p><b>処理が正常終了しました。</b></p>" & _
            "<table border='1' cellpadding='5' style='border-collapse:collapse;'>" & _
            "<tr><th>日時</th><td>" & Format(Now, "yyyy/mm/dd hh:nn:ss") & "</td></tr>" & _
            "<tr><th>詳細</th><td>" & successMsg & "</td></tr>" & _
            "</table>" & _
            "</body></html>"
        
        .Send
    End With
End Sub

'=== HTMLメール送信(エラー通知) ===
Sub SendErrorMailHTML(errMsg As String)
    Dim objMsg As Object
    Dim objConf As Object
    
    Set objMsg = CreateObject("CDO.Message")
    Set objConf = CreateObject("CDO.Configuration")
    
    ' SMTP設定(同上)
    With objConf.Fields
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.office365.com"
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "your_account@domain.com"
        .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "your_password"
        .Update
    End With
    
    With objMsg
        Set .Configuration = objConf
        .From = "your_account@domain.com"
        .To = "admin@domain.com"
        .Subject = "【VBAタスクエラー通知】"
        
        ' HTML本文
        .HTMLBody = _
            "<html><body>" & _
            "<h2 style='color:red;'>❌ VBAタスクエラー通知</h2>" & _
            "<p><b>エラーが発生しました。</b></p>" & _
            "<table border='1' cellpadding='5' style='border-collapse:collapse;'>" & _
            "<tr><th>日時</th><td>" & Format(Now, "yyyy/mm/dd hh:nn:ss") & "</td></tr>" & _
            "<tr><th>エラー詳細</th><td>" & errMsg & "</td></tr>" & _
            "</table>" & _
            "</body></html>"
        
        .Send
    End With
End Sub
VB

この拡張版のポイント

  • HTML本文を利用 → 見出し・色・表形式で見やすい
  • 成功通知は緑色、エラー通知は赤色で強調
  • テーブル形式で日時や詳細を整理
  • 管理者が一目で状況を把握可能

実務でのメリット

  • メール本文が整形されているため、可読性が高い
  • 成功/失敗が色で区別されるので、直感的に分かる
  • テーブル形式でログ情報を整理できるので、監査や報告に便利

✅ まとめ

  • HTMLメール通知で見やすさを改善
  • 成功/失敗を色分け+テーブル形式で管理者に分かりやすく通知
  • タスクスケジューラと組み合わせれば、完全自動監視+見やすい通知が実現
タイトルとURLをコピーしました