【コピペでOK】Excel VBAでTeamsに通知!Power Automate(ワークフロー)自動化ガイド

コピペで使えるコード集

Teamsへのメッセージ送信を自動化したい!
エクセルリストの更新通知をTeamsに発信したいけど、やり方がわからない…

チーム全体への一斉通知や、リスト更新通知など、Teamsへの入力は意外と手間です。逆に言うとTeamsへの自動メッセージ送信で、効率化できる業務は意外とあります。

この記事では、Excel VBAを使ってMicrosoft Teamsのチャネルに自動で通知を投稿する方法を解説します。なお、コピペで使えるVBAコードも掲載しています。VBA初心者の方も使えるよう、貼り付け方も紹介しているので、ぜひ活用してみてください!

今回は、Power Automate(ワークフロー)を利用する方法と、Incoming Webhookを活用する方法の2パターンを紹介しています。Incoming Webhookは、2025年12月に廃止が決定しているので、基本的にはPower Automate(ワークフロー)をおすすめします。

なお、このブログでは効率化に関する様々な情報を紹介しています。この記事が参考になれば、ぜひほかの記事も見てみてください!

VBAからTeamsのチャネルに自動投稿する方法!

Excel VBAからTeamsに通知を送る方法として、以下の2つの方法があります。

なおこのVBAでは、個人チャットへの投稿はできません。個人チャットへの投稿はシステム開発が必要です。その為、一般のユーザーで対応するのはかなり難しい領域となっています。

詳細については、後ほど詳しく説明します。

ワークフロー(Power Automate)を使う方法

ひとつめが、Teamsの「ワークフロー」という機能を使った方法です。ワークフローは、Power Automateの機能をTeamsに組み込んだものです。(※Power AutomateはMicrosoftの業務自動化ツール)

現在はこちらのやり方が推奨されていますので、基本的にはワークフローを使って、自動化を進めてみてください。

Webhookを使う方法(Incoming Webhook)

Incoming Webhookとは、外部サービスからTeamsのチャネルにメッセージを送るための仕組みです。Webhook用のURLにリクエストを送ることで、メッセージが投稿されます。

ただし、このIncoming Webhook機能は、2025年12月に廃止予定となっています。その為、長期的な運用には向いていません。今後はワークフロー(Power Automate)で作成するのがベストです。

ワークフロー(Power Automate)でTeamsにVBA通知を送る手順

ワークフロー(Power Automate)を使う手順を紹介します。コピペで使えるコードも紹介しているので、ぜひとも参考にしてみてください。

①Teamsの「ワークフロー」の設定

ステップ1:Teamsの「ワークフロー」を開く

Teamsの左メニューにある「アプリ」から「ワークフロー」を開きます。

ステップ2:「通知」カテゴリからテンプレートを選ぶ

下に行くと「通知」があるので、「すべて表示」をクリック

「Webhook要求を受信するとチャネルに投稿する」というテンプレートを選びます。これが、外部(VBA)からのリクエストを受けて、Teamsに通知する基本形となります。

「Webhook要求を受信したらチャットに投稿する」の方ではないので注意
ステップ3:チャネルと内容を設定する

フローの詳細画面で、対象のチャネルの設定を行います。

まず、この設定の名前を付けて「次へ」をクリック。

次に、VBAで投稿する先となるチームとチャネルを選択

「HTTP要求のURL」が自動生成されるので、これを控えておきます。このURLがVBA側から送信する宛先となります。

②エクセルの設定(VBAの貼り付け)

次にエクセル側の設定を行います。コピペコードをそのまま使うためのエクセル準備となっています。コードを編集される方も、動作確認として一度エクセル設定をしてみてください。

エクセルの準備

A1セルに「Webhook URL」/A2セルに「メッセージ」と記入してください。

そして先ほど控えておいたHTTP要求のURLをB1セルに記入します。

投稿したいメッセージはB2セルに記入してください。

VBAの埋込

エクセルの「開発」タブから「Visual Basic」エディタを開きます。そして次に紹介するVBAコードを「標準モジュール」に貼り付けます。

なお、「開発」を出す設定コードの書き方は、別の記事で詳しく解説しています。こちらの記事もぜひ参考にしてみてください。

VBAからWebhook URLにリクエストを送信するコピペコード

以下のコードをそのままコピーして、VBAに貼り付けてください。

セル「B1」にWebhook URL、「B2」に投稿したい本文があることが前提となっています。

Sub TestSendWorkflowWebhook()
    Dim http As Object
    Dim url As String
    Dim message As String
    Dim payload As String

    ' セルから Webhook URL と本文を取得
    url = Trim$(Range("B1").Value)
    message = JsonEscape(Trim$(Range("B2").Value))

    ' セル内の改行(vbLf)を JSON の \n に変換
    message = Replace(message, vbCrLf, "\n")
    message = Replace(message, vbLf, "\n")

    ' Adaptive Card の JSON ペイロード
    payload = "{""attachments"":[{""contentType"":""application/vnd.microsoft.card.adaptive""," & _
              """content"":{""$schema"":""http://adaptivecards.io/schemas/adaptive-card.json""," & _
              """type"":""AdaptiveCard""," & _
              """version"":""1.2""," & _
              """body"":[{""type"":""TextBlock""," & _
                         """text"":""" & message & """," & _
                         """wrap"":true," & _
                         """markdown"":true}]" & _
              "}}]}"

    ' HTTP リクエスト送信
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "POST", url, False
    http.setRequestHeader "Content-Type", "application/json"
    http.Send payload

    If http.Status = 200 Or http.Status = 201 Or http.Status = 202 Then
        MsgBox "送信成功!"
    Else
        MsgBox "送信失敗:" & http.Status & vbCrLf & http.responseText
    End If
End Sub

' JSON内の特殊文字 " をエスケープ
Function JsonEscape(text As String) As String
    JsonEscape = Replace(text, """", "\""")
End Function

実行例

VBAを実行することですぐにTeamsチャネルにメッセージが表示されます。

Incoming Webhookを使う方法(※2025年廃止予定)

ここからはIncoming Webhookを使う手順を紹介します。

①Webhookの設定方法

ステップ1:Teamsチャネルにコネクタを追加

まず、設定したいチャネルの「…」→「チャンネルを管理」

次に、下の方にある「コネクタ」の「編集」をクリック

さらに、左側の検索欄に「Incoming Webhook」と入力します。検索結果に出てきたら「Configure」を押して追加します。

ステップ2:Webhook URLを取得

「Configure」を押すと画面が切り替わります。まず、表示させたい名前を入力します。さらに、アイコンを変える場合は、「Upload Image」から画像ファイルをアップロード。

そして、完了したら「Create」を選択。

Webhook追加後、専用のURLが表示されるのでコピーして控えておきます。このURLに向けて、VBAからPOSTリクエストを送ります。

②エクセルの設定(VBAの貼り付け)

次にエクセル側の設定を行います。コピペコードをそのまま使うためのエクセル準備となっています。コードを編集される方も、動作確認として一度エクセル設定をしてみてください。

なおVBAコード以外、ワークフローの時とやることは同じです。

エクセルの準備

まず、A1セルに「Webhook URL」/A2セルに「メッセージ」と記入してください。

そして先ほど控えておいたHTTP要求のURLをB1セルに記入します。

また、投稿したいメッセージはB2セルに記入してください。

VBAの埋込

エクセルの「開発」タブから「Visual Basic」エディタを開きます。そして次に紹介するVBAコードを「標準モジュール」に貼り付けます。

また「開発」を出す設定コードの書き方は、別の記事で詳しく解説しています。こちらの記事もぜひ参考にしてみてください。

VBAコード(Webhook版)

以下のコードで、Webhookを通じてTeamsチャネルにメッセージを投稿できます。


Sub SendToTeamsWebhook()
    Dim http As Object
    Dim url As String
    Dim message As String
    Dim payload As String

    url = Trim$(Range("B1").Value)
    message = JsonEscape(Trim$(Range("B2").Value))
    message = Replace(message, vbCrLf, "\n")
    message = Replace(message, vbLf, "\n")

    payload = "{""text"":""" & message & """}"

    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "POST", url, False
    http.setRequestHeader "Content-Type", "application/json"
    http.Send payload

    If http.Status = 200 Then
        MsgBox "送信成功!"
    Else
        MsgBox "送信失敗:" & http.Status & vbCrLf & http.responseText
    End If
End Sub

個人チャットへの自動投稿はVBAでできないの?

Teamsで個人宛てのチャットにVBAから直接通知を送ることは、一般ユーザーでは難しいです。これは、Microsoft Graph APIと呼ばれる開発者向けの仕組みを使ってBotを作成し、Azure AD認証などを経て個人チャットへ送信する必要があるからです。

さらに、企業や組織によってはセキュリティ設定でBot開発やAPIアクセスが制限されているケースもあります。そのため、個人チャット宛ての自動通知は、IT部門や開発チームとの連携が必要となってきます。

まとめ:Teams自動通知の方法は今後ワークフローがおすすめ!

この記事では、Excel VBAからMicrosoft Teamsに自動で通知を送信する2つの方法を解説しました。

Webhook方式は2025年で廃止されるため、今後の運用には不向きです。ワークフロー(Power Automate)方式で、運用することをお勧めします。

今回の内容はExcel VBAの簡単なコードと組み合わせることで、報告業務や共有タスクの通知を自動化し、日々の業務効率を向上させることができます。あなたの業務にあった通知自動化の仕組みを、ぜひ一度構築してみてください。

また、このサイトではダウンロードで使えるVBAなど、簡単に効率化できる情報を発信しています。ぜひほかの内容も見てみてください!

※この記事を見た方は、こちらの記事もおすすめです!

コメント

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