トップページ(目次)

608.DALL・EのAPIを接続して画像生成しDLする_OpenAI_API使用
'画像をダウンロードするために以下のようにSubの上に追記しておく
#If VBA7 Then '64bitで場合分け
    Private Declare PtrSafe Function URLDownloadToFile _
    Lib "urlmon" Alias "URLDownloadToFileA" _
    ( _
    ByVal pCaller As Long, _
    ByVal szURL As String, _
    ByVal szFileName As String, _
    ByVal dwReserved As Long, _
    ByVal lpfnCB As Long _
    ) As Long
#Else '32bitで場合分け
    Private Declare Function URLDownloadToFile _
    Lib "urlmon" Alias "URLDownloadToFileA" _
    ( _
    ByVal pCaller As Long, _
    ByVal szURL As String, _
    ByVal szFileName As String, _
    ByVal dwReserved As Long, _
    ByVal lpfnCB As Long _
    ) As Long
#End If


'ここからが本番
Sub DALL_EのAPIを接続して画像生成し作成画像をDLする_OpenAI_API使用()
    
    '※OpenAI API key の挿入が必須です
    APIkey = ""
    
    'これは固定
    url = "https://api.openai.com/v1/images/generations"
    
    'ここで作って欲しい画像のプロンプトを指定
    作成画像プロンプト = "red lemon"
    
    'DALL EのAPIへ送るリクエスト分をまとめ
    リクエスト文 = "{""prompt"":""" & 作成画像プロンプト & """,""num_images"":1,""size"":""512x512""}"
    
    '事前準備
    Set GetChatGPT = CreateObject("MSXML2.XMLHTTP")
    
    'ここで接続→リクエスト送信→受け取り
    With GetChatGPT
        Call .Open("POST", url, False)
        Call .setRequestHeader("Content-Type", "application/json")
        Call .setRequestHeader("Authorization", "Bearer " & APIkey)
        Call .send(リクエスト文)
         
        'レス4が入るまで繰り返して待つ
        Do While .readyState <> 4: DoEvents: Loop
         
        返答原文 = .responseText
         
    End With
    
    '返ってきた文から、画像URLをDLするためにURLのみを抜き出す処理
    画像DL_URL = Mid(返答原文, InStr(返答原文, "url") + 7, Len(返答原文))
    画像DL_URL = Mid(画像DL_URL, 1, InStr(画像DL_URL, "    }") - 3)
    
    保存名 = ThisWorkbook.Path & "\" & "sample.png"
    
    '同じ場所に画像をダウンロードする
    画像DL = URLDownloadToFile(0, 画像DL_URL, 保存名, 0, 0)
 
End Sub

Copyright © 2021 https://excel3000.web.fc2.com/ All Rights Reserved.
    inserted by FC2 system