外部連携 × Slack通知
Excel VBAから Slackに通知を送る ことで、Excelを「業務連絡のフロント」として活用できます。
例えば「処理完了をSlackに通知」「エラー発生をSlackに知らせる」「日次報告をSlackに投稿」などが可能です。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。
基本の考え方
- Slack通知の仕組み
- Slackの「Incoming Webhook」を設定して通知用URLを取得
- VBAからHTTPリクエストを送信
- 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を使う。 - 複数行の通知が可能。
- JSON内で改行は
例題で練習
'例1:シンプルな通知をSlackに送信
'例2:Excelのセル値を通知に組み込む
'例3:エラー発生時にSlackへ通知
'例4:複数行メッセージを送信
VB初心者向けポイント
- Slack通知はWebhook URLが必須 → 事前にSlackで設定して取得。
- JSON形式でメッセージを送信 →
"text"に通知内容を記載。 - Excelの値やエラー内容を組み込める → 実務で便利。
- Excelを「Slack通知のフロント」として活用できる → 報告や監視を自動化。
👉 この「外部連携 × Slack通知テンプレ」を覚えておけば、Excel VBAで 処理結果やエラーをSlackに自動通知する仕組み を簡単に作成できます。
