Excel中使用VBA接入ChatGPT新玩法

AI 知识库10个月前发布 easypay007
737 0 0
博思AIPPT
一、前言
前段时间一直忙着备考的事情,文章更新频次降了下来,真心没时间写。事情太多每天加班到8-9点,到家后还得复习。再加上搞的副业每天晚上凌晨1-2点睡,真的狠不能有个三头六臂。但人的精力是有限的你不可能每件事情都百分百的投入,只能舍弃一些。有篇文章留言中答应粉丝的一个指南课程要兑现起来,这不赶紧安排上了。好的话不多说咱们直奔主题。

Excel中使用VBA接入ChatGPT新玩法
二、背景
微软的全家桶办公软件和大家平时工作生活息息相关。自从有了AI,所有的行业和产业都在重组,所有的业务和工具都在重构。AI带来的变革是具有划时代意义的。马云在24年的年会上提到,未来的20年,AI时代带来的巨大变革会超出所有人的想象,因为AI会是一个更加伟大的时代,AI会改变一切。微软也是最早开始布局的服务商之一,随之推出的Copilot也是将已有的应用程序全部集成,如Word、Excel、PowerPoint、Outlook等,有了AI的加持和赋能,用户在使用文字转化这方面将更加高效。

Excel中使用VBA接入ChatGPT新玩法

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

三、准备工作
大模型厂商有很多家,这里咱们使用国内ChatGPT作为演示示范。
1.在Excel中添加开发工具
在Excel选项左侧菜单栏中有个自定义功能区中,选中“开发工具”

Excel中使用VBA接入ChatGPT新玩法
2.添加VBA的模块代码
在Excel中添加开发工具模块后,打开Visual Basic工具

Excel中使用VBA接入ChatGPT新玩法

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

Excel中使用VBA接入ChatGPT新玩法

在宏中插入以下代码,其中”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!")

4.不需要将宏工具添加到工具栏
在完成宏函数模块之后,就可以使用”=ChatGPT()”函数了
Excel中使用VBA接入ChatGPT新玩法

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

5.存为启用宏的Excel模板
为了在启动Excel时能够自动添加这个,我们需要将刚创建的这个带有ChatGPT宏组件的Excel文档另存文件为“Excel启用宏的工作簿(*.xlsm)或Excel启用宏的模板(*.xltm)
Excel中使用VBA接入ChatGPT新玩法
6.添加Excel加载项
在大家操作过程中,打开新建的带有宏的Excel模板中,有时候发现该组件仍旧报错无法使用,这可能就是由于Excel自身禁用了加载项所导致的。这个问题可以通过Excel加载项设置来解决:在Excel的选项➡加载项➡转到➡浏览➡选择模板来解决。
Excel中使用VBA接入ChatGPT新玩法
四、应用实例
在Excel的使用中,ChatGPT函数有些特殊,是需要我们将问题凝练一句完整的句子输入到函数中,使其作出反应。可以参考下面这个案例,在完成函数中的提问后,下拉框即可批量回答。

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

Excel中使用VBA接入ChatGPT新玩法

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

Excel中使用VBA接入ChatGPT新玩法

© 版权声明

相关文章