こんにちは、なかぜんです。
Accessの中でちょっと複雑なロジックを計算しようと思った時、「VBAだけではしんどいなぁ…」と思ったことはありませんか?
そんなとき、ChatGPTのAPIを使って外部に“頭脳”を借りてしまうという発想が役立ちます。
この記事では、AccessとOpenAIのChatGPT APIを連携させ、VBAから複雑な計算処理を行う方法を丁寧に解説します。少し上級者向けですが、業務の幅が一気に広がる技術ですので、ぜひ最後までお付き合いください。
ChatGPTに計算させるとは?
普通のVBAでは難しい処理も得意
たとえば「請求書の明細から利益率を計算しつつ、特例条件を加味したコメントをつけてほしい」など、単なる数式では処理しきれないケースがあります。
こうした“人間が判断するような”処理を、ChatGPTに任せることで簡潔に解決できます。
ChatGPT APIを使えばVBAから直接指示が出せる
OpenAIが提供するAPIを利用すれば、HTTPリクエストを使ってChatGPTに「これを計算して」と命令できます。そして、その結果をAccessに戻すことも可能です。
準備:OpenAIのAPIキーとVBAの環境
OpenAI APIの取得
- OpenAIのアカウントを作成
- ダッシュボードからAPIキーを取得
このAPIキーは後ほどVBA内で使います。
VBAでHTTP通信を行う準備
参照設定で「Microsoft XML, v6.0」ライブラリを有効にしておいてください。
実装例:Access VBAでChatGPTに計算を依頼する
サンプル:商品のコストから販売価格と利益を計算
' ChatGPTを使って販売価格を提案させる
Sub AskChatGPT()
Dim http As Object
Dim url As String
Dim apiKey As String
Dim prompt As String
Dim jsonBody As String
Dim response As String
apiKey = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ' ←取得したAPIキーに置き換え
url = "https://api.openai.com/v1/chat/completions"
prompt = "原価が380円の商品の、利益率30%で販売価格と利益額を計算してください。"
jsonBody = "{""model"":""gpt-3.5-turbo"",""messages"":[{""role"":""user"",""content"":""" & prompt & """}]}"
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "POST", url, False
http.setRequestHeader "Content-Type", "application/json"
http.setRequestHeader "Authorization", "Bearer " & apiKey
http.Send jsonBody
response = http.responseText
MsgBox "ChatGPTの返答:" & vbCrLf & ParseChatGPTResponse(response)
End Sub
Function ParseChatGPTResponse(json As String) As String
Dim startPos As Long, endPos As Long
startPos = InStr(json, """content"":""") + 11
endPos = InStr(startPos, json, """}")
ParseChatGPTResponse = Mid(json, startPos, endPos - startPos)
End Function
このコードの解説
prompt
に送る質問内容を記述します。jsonBody
としてAPIに渡す内容を構築します。MSXML2.XMLHTTP
を使ってHTTPリクエストを送信しています。- レスポンスから「content」の中身を抽出し、MsgBoxで表示しています。
注意点とよくあるミス
APIキーが漏洩しないように注意!
APIキーをコードに直書きする場合は、Accessファイルにパスワード保護やMDE形式を使って漏洩対策をしておきましょう。
レスポンス解析の失敗
ChatGPTの返答形式が変わることがあるため、ParseChatGPTResponse
関数がうまく動かないことがあります。正規表現やJSONパーサー(VBA-JSONなど)を使うとより安全です。
APIの利用制限(Rate Limit)
無料プランや月額制のプランでは1分あたりのリクエスト数に制限があります。業務利用時にはプラン確認を忘れずに。
応用ポイント
複数データをループで処理
レコードセットで複数の行をChatGPTに順番に渡すことで、バッチ処理も可能です。
自然言語での分類・分析
「このクレーム内容はどのカテゴリに分類されるか?」など、人間の感覚が必要な処理をChatGPTが代行できます。
帳票コメントの自動生成
出荷明細や請求書に自動で「コメント欄」を生成し、個別に気の利いた一言を添えるといった業務にも応用できます。
まとめ:AIを味方にすればAccessはもっと進化する
今回は、Access VBAからChatGPTを利用して「計算処理」を外部委託する方法をご紹介しました。
- AccessのVBAだけでは難しい処理も、ChatGPTを使えば柔軟に対応可能
- APIキーとHTTP通信の仕組みがわかれば意外と簡単
- 業務の自動化・効率化に活用できる
もし「業務の中にAIをどう組み込むか」に悩んでいたら、まずは今回のサンプルから試してみてください。
次回は、ChatGPTを使って「データの要約」や「文章の自動生成」を行う実践テクニックもご紹介したいと思います!
以上、なかぜんでした!
