Excel中使用VBA接入ChatGPT新玩法


咱们在不使用Copilot的情况下是否也可以通过Excel自己去集成AI大模型呢?当然是可以的,下面开始介绍一下操作步骤:


在Visual Basi工具栏中选中This Document右键添加模块并命名。

在宏中插入以下代码,其中”url”地址替换OpenAI的接口地址。”apiKey” 替换成你自己申请的API key。
Option Explicit
' 用于从 OpenAI 获取响应
Public Function ChatGPT(ByVal prompt As String, _
Optional ByVal temperature As Single = 0.7, _
Optional ByVal maxTokens As Integer = 150, _
Optional ByVal model As String = "text-davinci-003") As String
'OpenAI API 密钥
Const apiKey As String ="sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"' 这里替换为你的 OpenAI API 密钥
Const apiEndpoint As String = "https://api.openai.com/v1/completions"
Dim requestHeaders As String
Dim httpRequest As Object
Dim httpResponse As String
Dim jsonBody As String
Dim jsonResponse As Object
Dim responseText As String
'创建 HTTP 请求对象
Set httpRequest = CreateObject("MSXML2.XMLHTTP")
' 设置 POST 请求
httpRequest.Open "POST", apiEndpoint, False
httpRequest.SetRequestHeader "Content-Type", "application/json"
httpRequest.SetRequestHeader "Authorization", "Bearer " & apiKey
'构造请求的 JSON 数据
jsonBody ="{""model"": """& model &""", ""prompt"": """& prompt &""", ""temperature"": "& temperature &", ""max_tokens"": "& maxTokens &"}"
' 发送请求
httpRequest.Send jsonBody
'检查请求是否成功(状态码 200)
If httpRequest.Status = 200 Then
' 获取响应文本
Set jsonResponse = JsonConverter.ParseJson(httpRequest.responseText)
responseText = jsonResponse("choices")(1)("text")
ChatGPT = responseText
Else
'如果请求失败,返回错误信息
ChatGPT ="Error: "& httpRequest.Status &" - "& httpRequest.StatusText
End If
End Function
' 使用方法:
'1. 你可以在工作表单元格中调用此函数。
' 2. 例如在 Excel 单元格中输入:=ChatGPT("你好,ChatGPT!")

到此,我们已经通过函数的方式将ChatGPT接入到了Excel中,但是在关掉Word重新打开后发现该宏组件无法使用或者是报错。所以我们需要进行下来的操作。


=chatGPT("请你准确的告诉我"&B2&"所在的城市,以国家+城市的组合形式回答")

=chatGPT("请你准确的告诉我"&B2&"在2020年全球高校QS排行榜中的位置,只需要回答'第几名'即可")