【VBA】ChatGPTを利用する

VBAから
 ・ChatGPTを利用する方法
を紹介します!
※VBAからChatGPTへ質問をして、回答を取得する方法紹介します

ChatGPTを利用するための
アカウント登録の手順等も紹介します!

この記事では
 ・gpt-3.5-turboを使用
します!

PR

Open AIのアカウント登録

手順

以下のURLへアクセスする。



手順

「Sign up」をクリックする。

「Sign up」をクリック
「Sign up」をクリック


手順

メールアドレスを入力して「Continue」をクリックする。
※「Continue with Google」でも良いと思います。

メールアドレスを入力して「Continue」をクリック
メールアドレスを入力して「Continue」をクリック


手順

パスワードを入力して「Continue」をクリックする。
※好みのパスワードを入力してください。

パスワードを入力して「Continue」をクリック
パスワードを入力して「Continue」をクリック


手順

先ほど入力したメールアドレスに、確認メールを送信した旨の画面が表示される。

先ほど入力したメールアドレスに確認メールを送信した旨の画面
先ほど入力したメールアドレスに確認メールを送信した旨の画面


手順

受信したメールの「Verify email address」をクリックする。

「Verify email address」をクリック
「Verify email address」をクリック


手順

以下を入力して「Continue」をクリックする。
・名前
・苗字
・生年月日
※「名前」と「苗字」はアルファベットで入力しました。漢字でも問題無いかは未確認です。

名前等を入力をして「Continue」をクリック
名前等を入力をして「Continue」をクリック


手順

携帯電話の番号を入力して「Send Code」をクリックする。

携帯電話の番号を入力して「Send Code」をクリック
携帯電話の番号を入力して「Send Code」をクリック


手順

携帯電話に届いたコードを入力する

携帯電話に届いたコードを入力
携帯電話に届いたコードを入力
PR

APIキー(secret key)の取得

手順

「Create new secret key」をクリックする。

「Create new secret key」をクリック
「Create new secret key」をクリック


手順

任意の名前を入力して「Create secret key」をクリックする。
※今回は任意の名前として「MyTestKey」と入力しました。

任意の名前(MyTestKey等)を入力して、「Create secret key」をクリック
任意の名前(MyTestKey等)を入力して、「Create secret key」をクリック


手順

表示されたsecret keyをコピーしテキストエディタ等にメモして、「Done」をクリックして閉じる。
※再表示はできないため、メモは無くないようにしてください。

secret keyをコピーして、テキストエディタ等にメモする
secret keyをコピーして、テキストエディタ等にメモする
PR

準備

以下で紹介するコードは「VBA-JSON(JsonConverter.bas)」を使用してJSONデータをパースしています。よって「VBA-JSON(JsonConverter.bas)」が必要です。

「VBA-JSON(JsonConverter.bas)」の取得は以下の記事をご確認ください。
※以下の実施が必要です。
 ・VBA-JSON(JsonConverter.bas)の取得
 ・VBA-JSON(JsonConverter.bas)の微修正
 ・参照設定の追加


PR

VBAコード

ここでは例として
 ・ChatGPTへ質問をして、回答を取得
します。
※今回は「VBAを学ぶメリットを教えてください。」と質問します。
※取得した回答をイミディエイトウィンドウへ出力します。
※エラーの場合はエラーメッセージをイミディエイトウィンドウ出力します。

Option Explicit

Sub sample()
    
    Dim apiKey As String
    Dim question As String
    Dim url As String
    Dim requestBody As String
    Dim http  As Object
    Dim stream As Object
    Dim json As Variant
    Dim responseUtf8 As String
    
    'APIキー(secret key)
    apiKey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    'ChatGPTへ渡す質問
    question = "VBAを学ぶメリットを教えてください。"
    
    'URL(APIエンドポイント)
    url = "https://api.openai.com/v1/chat/completions"
    'POSTリクエストのBody
    requestBody = "{""model"": ""gpt-3.5-turbo"",""messages"": [{""role"": ""user"", ""content"": """ & question & _
                  """}],""temperature"": 0.7}"
    
    Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
    
    'HTTPリクエスト
    With http
        .Open "POST", url, False
        .setRequestHeader "Content-Type", "application/json"
        .setRequestHeader "Authorization", "Bearer " & apiKey
        .Send requestBody
    End With
    
    Set stream = CreateObject("ADODB.Stream")
    
    'HTTPレスポンス(=JSON)がバイナリデータのため、UTF-8へデコード
    'デコード結果(=JSON)を変数「responseUtf8」へ格納
    With stream
        .Type = 1 'Binary
        .Open
        .Write http.responseBody
        .Position = 0
        .Type = 2 'Text
        .Charset = "UTF-8"
        responseUtf8 = .ReadText
        .Close
    End With

    'デコード結果(=JSON)をパース
    Set json = JsonConverter.ParseJson(responseUtf8)
    
    '回答をイミディエイトウィンドウへ出力
    If VarType(json("error")) = vbEmpty Then
        Debug.Print json("choices")(1)("message")("content")
    Else
        Debug.Print json("error")("message")
    End If
    
    '後片付け
    Set http = Nothing
    Set stream = Nothing
    
End Sub

以下を指定します(15~17行目)。
※状況に応じて任意の値を指定してください。

・APIキー(secret key)
・ChatGPTへ渡す質問
APIキー(secret key)先ほど取得したモノです。上記では「XXXXXXXXXXXXXXXXXXXXXXXXXXXX」としています。

「POSTリクエストのBody」を組み立てます(22~23行目)。
※内容の詳細は気にしなくて良いです。

HTTPレスポンス(=JSON)がバイナリデータのため、UTF-8へデコードします(39~48行目)。

取得した回答をイミディエイトウィンドウへ出力します(54~58行目)。
※エラーの場合はエラーメッセージを出力します。

PR

実行結果

VBAからChatGPTを利用できました。
※「VBAを学ぶメリットを教えてください。」を質問して回答を得ることができました。

実行結果
実行結果

実行(質問)する度に、結果(回答)は変わります。

PR

参考

ChatGPTのAPIは有料ですが、5ドル分は無料です。
現時点の使用金額は以下で確認できます。