AccessでChatGPTを使って計算させる技|VBA×APIで業務効率を爆上げ!

Access

こんにちは、なかぜんです。

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の取得

  1. OpenAIのアカウントを作成
  2. ダッシュボードから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を使って「データの要約」や「文章の自動生成」を行う実践テクニックもご紹介したいと思います!

以上、なかぜんでした!