こんにちは、なかぜんです。
Accessの運用で「エラーが発生しても気づかない…」「問い合わせのたびに調査が大変…」と悩んでいませんか?
今回は、そんなお悩みを解決する“エラーログをTeamsに自動で飛ばす”応用テクニックをご紹介します。
VBA×Teamsの連携で、エラーをすぐに把握できる仕組みを構築してみましょう。
1. なぜAccessとTeamsを連携させるのか?
■ エラーの「見える化」がチームの力に
Accessでのエラーは、ユーザーからの報告がないと把握できないケースも多いですよね。
しかし、Teamsに自動通知されれば「誰が」「どこで」「いつ」エラーを出したのかがすぐに把握できます。
■ Webhookを活用して簡易通知システムを構築
Microsoft Teamsには「Webhook」という仕組みが用意されており、URLにデータを送信するだけでチャンネルに通知が届くようにできます。
このWebhookにAccessからVBAでエラー情報を送ることで、連携が実現します。
2. 実装ステップとコード解説
■ Webhookの設定
- Teamsの任意のチャンネルを開く
- 「コネクタ」→「Incoming Webhook」を追加
- 名前を入力し、Webhook URLを取得(※後でVBAに使います)
■ VBAコードでエラー送信
以下は、エラー発生時にTeamsへ通知する基本コードです。
Sub NotifyErrorToTeams(errSource As String, errDesc As String)
Dim http As Object
Dim webhookUrl As String
Dim jsonBody As String
webhookUrl = "https://outlook.office.com/webhook/xxxxxxx" '←取得したURLをここに記述
jsonBody = "{""text"":""【Accessエラー通知】" & vbCrLf & _
"発生元:" & errSource & vbCrLf & _
"内容:" & errDesc & vbCrLf & _
"ユーザー:" & Environ(""USERNAME"") & vbCrLf & _
"日時:" & Now & """}"
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "POST", webhookUrl, False
http.setRequestHeader "Content-Type", "application/json"
http.Send jsonBody
Set http = Nothing
End Sub
ポイント解説:
errSource
:エラー発生元(関数名など)errDesc
:エラー内容(Err.Descriptionなど)Environ("USERNAME")
:ログインユーザー名を取得
■ 実際のエラー処理との組み合わせ
Sub SampleProcedure()
On Error GoTo ErrorHandler
' ここに通常処理を書く
MsgBox 1 / 0 ' わざとエラーを発生させる
Exit Sub
ErrorHandler:
Call NotifyErrorToTeams("SampleProcedure", Err.Description)
Resume Next
End Sub
3. よくあるミス・注意点
- Webhook URLの形式ミス:コピペミスでURLが途切れると通知されません。
- Teamsの設定ミス:Webhookはチャンネルごとに異なるので、正しいURLを使う必要があります。
- JSONの改行:
\n
ではなくvbCrLf
を使い、整形にも注意が必要です。
4. 応用ポイント:さらに便利にするアイデア
■ ログファイルとの併用
Teams通知だけでなく、同時にログテーブルやテキストファイルに記録しておくとトラブル時に解析しやすくなります。
■ 処理レベルでの詳細通知
「どのボタンを押したか」「どのレコードIDで失敗したか」など、詳細な情報を渡すよう工夫することで、より現場で使える通知に。
■ 開発・運用モードで切り替え
運用時のみ通知を有効にするなど、モードに応じて送信制御する設計にすると開発がしやすくなります。
5. まとめ:エラー通知を“仕組み”でカバーしよう
今回の内容を実装すると、Accessで発生したエラーを即座にTeamsに通知できるようになります。
現場でのトラブル対応が圧倒的に早くなり、チーム全体の安心感にもつながります。
特に、業務システムとしてAccessを活用している場合には、今回の仕組みは「業務品質の底上げ」に直結します。
ぜひ、あなたのAccessアプリにも取り入れてみてくださいね。
