近年、CSVデータを取り込む業務はますます増加しています。しかし、実際に運用していると「数量がおかしい」「金額が異常に大きい」「住所が不自然」など、人の目で確認しなければ見つからない問題が発生します。
結論から言うと、Access VBAからOpenAI APIを利用することで、従来のルールベースでは見つけにくかった異常データを自動検出できるようになります。
最近ではJSON連携やAPI連携の重要性が高まっており、OpenAI APIも同じようにJSON形式で利用できます。Access VBAと組み合わせることで、既存のCSV取込システムにAIによるデータチェック機能を追加できます。 [latest-inf…system.com]
- AIによる異常値検出とは
- なぜOpenAIを活用するのか
- OpenAI APIとは
- システム構成例
- 異常検知履歴テーブルを作成する
- 逆引き① OpenAIへ送信したい
- 逆引き② HTTP通信したい
- 逆引き③ POST送信したい
- 逆引き④ 結果を取得したい
- 逆引き⑤ 判定結果を保存したい
- 実践例① 売上データチェック
- 実践例② 在庫データ分析
- 実践例③ 顧客マスタ確認
- 実践例④ 作業日報チェック
- 実践例⑤ 問い合わせデータ分析
- AI判定時のプロンプト例
- エラーハンドリングを実装する
- ログ管理も組み合わせる
- Copilot活用術① OpenAI連携コード作成
- Copilot活用術② プロンプト改善
- Copilot活用術③ ログ分析
- OpenAI導入時の注意点
- AccessとOpenAIの相性が良い理由
- まとめ
AIによる異常値検出とは
従来の異常値検出は次のようなルールでした。
数量 > 10000
金額 > 10000000
しかし実際には、
数量:15
単価:100円
金額:500万円
のように、単純な条件では判定できない異常があります。
OpenAIを利用すると
数量
単価
金額
商品名
顧客情報
備考
などを総合的に判断できます。
なぜOpenAIを活用するのか
例えば次のデータです。
| 顧客名 | 商品名 | 数量 | 金額 |
|---|---|---|---|
| A商事 | ケーブル | 10 | 5000 |
| B工業 | ケーブル | 12 | 6000 |
| C株式会社 | ケーブル | 15 | 700000 |
人はすぐに違和感に気付きます。
一方で単純なルールでは、
700000円
↓
上限未満
↓
正常
と判定される場合があります。
OpenAIは文脈を考慮した判断が可能です。
OpenAI APIとは
OpenAI APIは、アプリケーションからAIへ指示を送信し、結果を取得する仕組みです。
流れは次の通りです。
Access
↓
JSON生成
↓
OpenAI API
↓
分析
↓
結果返却
↓
Accessへ保存
現在のAccess VBAでも十分に実装可能です。 [latest-inf…system.com]
システム構成例
CSVファイル
↓
Access取込
↓
OpenAI分析
↓
異常判定
↓
要確認リスト作成
↓
担当者確認
既存システムへの追加も比較的容易です。
異常検知履歴テーブルを作成する
まずはログ管理用テーブルです。
T_AI_CHECK_LOG
| 項目 | 内容 |
|---|---|
| ID | オートナンバー |
| 確認日時 | 日時 |
| 対象データ | 長いテキスト |
| 判定結果 | 短いテキスト |
| AIコメント | 長いテキスト |
| 確認者 | 短いテキスト |
後から分析できるようにしておきます。
逆引き① OpenAIへ送信したい
まずはJSONを作成します。
Dim strJson As String
strJson = _
"{""model"":""gpt-4o-mini""," & _
"""messages"":[{""role"":""user""," & _
"""content"":""以下の販売データに異常があるか判定してください""}]}"
JSON形式で作成します。
逆引き② HTTP通信したい
OpenAI APIへ接続します。
Dim objHttp As Object
Set objHttp = _
CreateObject("MSXML2.XMLHTTP")
Access VBAでよく利用する方法です。 [latest-inf…system.com]
逆引き③ POST送信したい
API実行部分です。
objHttp.Open _
"POST", _
strUrl, _
False
objHttp.setRequestHeader _
"Content-Type", _
"application/json"
objHttp.setRequestHeader _
"Authorization", _
"Bearer " & strApiKey
objHttp.send strJson
OpenAIとの通信が実行されます。
逆引き④ 結果を取得したい
応答を取得します。
Dim strResponse As String
strResponse = _
objHttp.responseText
JSON形式の結果が返却されます。 [latest-inf…system.com]
逆引き⑤ 判定結果を保存したい
分析結果を履歴へ残します。
CurrentDb.Execute _
"INSERT INTO T_AI_CHECK_LOG " & _
"(確認日時,判定結果) " & _
"VALUES(Now(),'異常あり')"
後から確認できます。
実践例① 売上データチェック
CSV取込後の処理です。
CSV取込
↓
売上データ抽出
↓
OpenAI分析
↓
異常一覧出力
月次売上システムで有効です。
実践例② 在庫データ分析
在庫管理システムにも利用できます。
例えば、
在庫数 10
出庫数 500
などの異常パターンを検出できます。
実践例③ 顧客マスタ確認
マスタデータ登録時にも有効です。
具体例
電話番号桁数異常
住所形式異常
会社名記載ミス
従来は目視確認が必要でした。
実践例④ 作業日報チェック
最近注目されている活用方法です。
例えば
作業時間:2時間
実施内容:
原子炉停止操作
設備点検
全面復旧対応
のような記載で整合性が取れているかを確認できます。
人によるレビュー負荷を削減できます。
実践例⑤ 問い合わせデータ分析
過去データから異常傾向を発見できます。
通常の問い合わせ
障害報告
緊急案件
クレーム
などの分類も可能です。
AI判定時のプロンプト例
精度向上のために重要です。
以下の販売データについて
異常と思われる箇所を指摘してください。
判定理由も回答してください。
結果は
正常
または
異常
で回答してください。
シンプルな指示の方が安定します。
エラーハンドリングを実装する
通信処理では必須です。
On Error GoTo ErrHandler
'API処理
Exit Sub
ErrHandler:
MsgBox _
Err.Number & vbCrLf & _
Err.Description
安定運用に役立ちます。 [latest-inf…system.com], [latest-inf…system.com]
ログ管理も組み合わせる
AI連携では履歴が重要です。
保存する項目
- 実行日時
- 対象データ
- 判定結果
- 応答内容
- エラー内容
トラブル分析が容易になります。 [latest-inf…system.com]
Copilot活用術① OpenAI連携コード作成
Copilotへ依頼します。
Access VBAです。
OpenAI APIへ接続し
分析結果を取得する
コードを作成してください。
開発速度が向上します。 [latest-inf…system.com]
Copilot活用術② プロンプト改善
Copilotへ依頼します。
異常値検出の精度を
向上させるプロンプトへ
改善してください。
AIの回答品質向上につながります。
Copilot活用術③ ログ分析
大量のAI判定結果を分析できます。
以下のログから
異常発生傾向を
分析してください。
運用改善に活用できます。
OpenAI導入時の注意点
個人情報を送信しない
顧客情報や機密情報はマスキングを行いましょう。
例
山田太郎
↓
顧客A
東京都千代田区
↓
東京都
AI判定を過信しない
最終判断は人が行います。
AIは補助ツールとして活用するのがおすすめです。
判定基準を明確にする
プロンプトが曖昧だと結果も不安定になります。
ログを残す
運用改善のため必須です。
AccessとOpenAIの相性が良い理由
Accessは業務データを扱うことに強みがあります。
一方OpenAIは、
- 自然言語分析
- 異常パターン検出
- コメント生成
- 分類処理
が得意です。
両者を組み合わせることで、
データ管理 + AI分析
が実現できます。
従来のAccessシステムを大きく作り変えることなく、AI機能を追加できる点も魅力です。
まとめ
Access VBAからOpenAI APIを利用することで、CSVデータの異常値検出を大幅に高度化できます。
従来のような単純な条件チェックだけでなく、
- 売上データ異常検出
- 在庫データ分析
- 顧客マスタ確認
- 日報チェック
- 問い合わせ分析
など幅広い用途で活用できます。
さらにCopilotを利用することで、
- API接続コード作成
- エラーハンドリング実装
- プロンプト改善
- ログ分析
も効率化できます。
これからのAccessシステムでは、データ管理だけではなく「AIによるデータ分析」を組み込むことが大きな差別化ポイントになるでしょう。


コメント