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" にチェックを入れる。
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です。
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/