Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

VBAからSlackやRocket.Chatにメッセージ投稿する

2020/3/24 追記:内容が古くなったので全体のリライトと、proxy利用の方法と注意点を追記しました。

ACCESSやEXCELで作られた既存の社内システムからアラートを投げたくなる時はありませんか?
これはVBAからIncoming Webhooks経由で、slackやRocket.Chatにメッセージを投稿する方法です。

まずはslackのWebhook URLを発行

slackのIncoming Webhookの設定方法が昔と変わりました。こちらの記事を参考にWebhook URLを取得します。
参考: slackのIncoming webhookが新しくなっていたのでまとめてみた
https://qiita.com/kshibata101/items/0e13c420080a993c5d16

Slackへの投稿

事前準備として、VBエディタの「ツール - 参照設定」から "Microsoft WinHTTP Services, version 5.1" にチェックを入れる。

VBA
TargetURL = "https://hooks.slack.com/services/xxxxxxxx/xxxxxxxx/xxxxxxxxxxxxxxxxxxxxx"
Set HTTPReq = CreateObject("WinHttp.WinHttpRequest.5.1")
' proxy経由の場合、下記を指定
' HTTPReq.setProxy 2, "192.168.0.1:3128"
HTTPReq.Open "POST", TargetURL, False
HTTPReq.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
HTTPReq.send ("payload={""text"":""ほげほげ\nほげほげ""}")

実行するとslackのチャンネルに投稿が来ます。

Rocket.Chatへの投稿

上記コードのTargetURLを、Rocket.Chatのwebhookに変えてやればOKです。

VBA
TargetURL = "http://localhost:3000/hooks/xxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

【注意点】windows7でproxy経由する場合

Ending support for TLS 1.0 and 1.1
https://medium.com/slack-developer-blog/ending-support-for-tls-1-0-and-1-1-423ae67a80b7

slackがTLS1.0/1.1のサポートを終了したため、windows7 でエラーが出るようになります。
簡単な解決方法は、Microsoftの "MicrosoftEasyFix51044" のパッチをあてる事です。
TLS1.2をデフォルトで使用するようになります。

参考:Windows 7でセキュリティエラーが出たら、SSLが有効なコンポーネントが残っていた
https://qiita.com/kitamin/items/eac07f4a5a104530ac59

おわりに

proxy経由で外部にアクセスできるならslack通知、逆に閉じた環境ならオンプレミスで運用できるRocket.Chatなど良いと思います。

Rocket.Chat
https://rocket.chat/

nidixx
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away