'画像をダウンロードするために以下のように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