Excel VBA 逆引き集 | Slack通知

Excel VBA
スポンサーリンク

外部連携 × Slack通知

Excel VBAから Slackに通知を送る ことで、Excelを「業務連絡のフロント」として活用できます。
例えば「処理完了をSlackに通知」「エラー発生をSlackに知らせる」「日次報告をSlackに投稿」などが可能です。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。


基本の考え方

  • Slack通知の仕組み
    1. Slackの「Incoming Webhook」を設定して通知用URLを取得
    2. VBAからHTTPリクエストを送信
    3. JSON形式でメッセージを渡すとSlackに投稿される
  • 用途例:
    • Excel処理完了をSlackに通知
    • エラー発生をSlackに知らせる
    • Excelの集計結果をSlackに共有

テンプレ1:Slackにシンプルな通知を送信

Sub SendSlackNotification()
    Dim http As Object
    Dim webhookUrl As String
    Dim jsonBody As String
    
    ' SlackのWebhook URL(事前に設定して取得)
    webhookUrl = "https://hooks.slack.com/services/xxxxxxx"
    
    ' 通知メッセージ(JSON形式)
    jsonBody = "{""text"":""Excel VBAからSlackに通知しました!""}"
    
    ' HTTPリクエスト送信
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "POST", webhookUrl, False
    http.setRequestHeader "Content-Type", "application/json"
    http.Send jsonBody
    
    MsgBox "Slackに通知を送信しました!"
End Sub
VB
  • ポイント:
    • Webhook URLはSlackで「アプリ → Incoming Webhook」を設定して取得。
    • JSONの "text" に通知内容を記載。

テンプレ2:Excelのセル値を通知に組み込む

Sub SendSlackNotification_FromSheet()
    Dim http As Object
    Dim webhookUrl As String
    Dim jsonBody As String
    Dim ws As Worksheet: Set ws = Worksheets("Report")
    
    webhookUrl = "https://hooks.slack.com/services/xxxxxxx"
    
    ' シートの値を通知に組み込む
    jsonBody = "{""text"":""本日の売上は " & ws.Range("B2").Value & " 円です。""}"
    
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "POST", webhookUrl, False
    http.setRequestHeader "Content-Type", "application/json"
    http.Send jsonBody
    
    MsgBox "シートの値をSlackに通知しました!"
End Sub
VB
  • ポイント:
    • Excelのセル値を文字列連結でJSONに組み込む。
    • 日次報告や集計結果を自動通知できる。

テンプレ3:エラー発生時にSlackへ通知

Sub SendSlackNotification_OnError()
    On Error GoTo ErrHandler
    
    ' 例:存在しないシートを参照
    Worksheets("NoSheet").Activate
    
    Exit Sub
    
ErrHandler:
    Dim http As Object
    Dim webhookUrl As String
    Dim jsonBody As String
    
    webhookUrl = "https://hooks.slack.com/services/xxxxxxx"
    jsonBody = "{""text"":""Excel VBAでエラーが発生しました: " & Err.Description & """}"
    
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "POST", webhookUrl, False
    http.setRequestHeader "Content-Type", "application/json"
    http.Send jsonBody
    
    MsgBox "エラー通知をSlackに送信しました!"
End Sub
VB
  • ポイント:
    • On Error GoTo でエラー処理をキャッチ。
    • エラー内容をSlackに通知。

テンプレ4:複数行のメッセージを送信(改行対応)

Sub SendSlackNotification_MultiLine()
    Dim http As Object
    Dim webhookUrl As String
    Dim jsonBody As String
    
    webhookUrl = "https://hooks.slack.com/services/xxxxxxx"
    
    ' 改行は \n を使う
    jsonBody = "{""text"":""処理が完了しました。\n売上データを確認してください。""}"
    
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "POST", webhookUrl, False
    http.setRequestHeader "Content-Type", "application/json"
    http.Send jsonBody
    
    MsgBox "複数行メッセージをSlackに送信しました!"
End Sub
VB
  • ポイント:
    • JSON内で改行は \n を使う。
    • 複数行の通知が可能。

例題で練習

'例1:シンプルな通知をSlackに送信
'例2:Excelのセル値を通知に組み込む
'例3:エラー発生時にSlackへ通知
'例4:複数行メッセージを送信
VB

初心者向けポイント

  • Slack通知はWebhook URLが必須 → 事前にSlackで設定して取得。
  • JSON形式でメッセージを送信"text" に通知内容を記載。
  • Excelの値やエラー内容を組み込める → 実務で便利。
  • Excelを「Slack通知のフロント」として活用できる → 報告や監視を自動化。

👉 この「外部連携 × Slack通知テンプレ」を覚えておけば、Excel VBAで 処理結果やエラーをSlackに自動通知する仕組み を簡単に作成できます。

タイトルとURLをコピーしました