###### tags: `OpenAI` `VBA` # 在 Office VBA 使用 Open AI API 之前介紹過[用 Python 串接 OpenAI 模擬 ChatGPT 聊天機器人](/A0Ezu83yTqKf8BYATaUdDQ), 既然它是走 HTTP POST, 如果你也想在 Office 中加入類似功能, 可以使用 Widnows 平台上的 [XmlHttpRequest](https://codingislove.com/http-requests-excel-vba/) 物件。以下就是一個簡單的範例: ```vba Sub openai_chat_completion() Dim prompt, url, body, api_key 'Dim xmlhttp As New MSXML2.XMLHTTP60 Dim xmlhttp As Object Set xmlhttp = CreateObject("MSXML2.serverXMLHTTP") api_key = "你的金鑰" url = "https://api.openai.com/v1/chat/completions" prompt = InputBox("請輸入提示文字", "OpenAI Text Completion", "hello") body = "{""model"": ""gpt-3.5-turbo""," & _ """messages"": [" & _ "{""role"": ""user"", ""content"": """ & prompt & """}" & _ "], " & _ """temperature"":0.7,""max_tokens"":1000}" xmlhttp.Open "POST", url, False xmlhttp.setRequestHeader "Content-Type", "application/json" xmlhttp.setRequestHeader "Authorization", "Bearer " & api_key xmlhttp.Send body MsgBox (xmlhttp.responseText) End Sub ``` 其中, open 的第三個參數是是否要以非同步方式執行?false 表示不以非同步方式執行, 也就是會等到取得回應結果才返回。如果需要非同步執行 HTTP 請求, 可以參考[這一篇文章的教學](http://dailydoseofexcel.com/archives/2006/10/09/async-xmlhttp-calls/)。 這個測試程式執行結果如下: ![](https://i.imgur.com/WI5VIPm.png) 輸入提示文字後即可取得回應: ![](https://i.imgur.com/0OiVKRt.png)