LoginSignup
8
15

More than 3 years have passed since last update.

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

Last updated at Posted at 2017-01-11

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/

8
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
15