Excel VBA调用DeepSeek API怎么做?附步骤
- 2026-09-23 16:00:54
在 Excel 里点一下按钮,让 DeepSeek 直接给一列客户评价打分、把一堆产品描述自动分类——这类需求听起来像插件功能,实际上一个 VBA 宏就能串起来。真正的门槛不在 VBA 语法,而在「密钥、请求体、返回结果」这三段怎么接上:密钥放哪里、JSON 怎么拼、返回的中文会不会乱码,任何一环没对上,程序不是报错就是静默返回空值。很多业务岗同事卡住的位置就在这里:宏录制会一点,一碰到发 HTTP 请求就停住了。
用 VBA 调 DeepSeek API 要准备哪三样东西?
三样东西:一个可用的 API 密钥、一个能发 POST 的 HTTP 组件、一份能拆开入参与出参的数据格式。
- API 密钥
:在 DeepSeek 开放平台注册账号后创建,创建时只显示一次,需要自己留存; - HTTP 组件
:VBA 里常用 `MSXML2.ServerXMLHTTP`,可以在 VBE 的「工具—引用」里勾选,也能用 `CreateObject` 后期绑定; - JSON 处理手段
:请求体和响应体都是 JSON,所以要有一个解析办法,自己写轻量函数或引用外部模块都行。
课程第一天从 VBA 简介、宏、模块、对象模型讲到变量与数据类型,第二天的 DeepSeek 高级功能里单独安排了错误处理与使用监控,这两块正好对着上面的清单。
请求体 JSON 该怎么拼才不会被服务器拒绝?
请求体必须是一段合法 JSON,`model` 和 `messages` 两个字段是必填的,少一个就直接被拒。
地址:`POST https://api.deepseek.com/chat/completions`,请求头 `Content-Type` 设为 `application/json`; `messages` 是数组,每条消息由 `role` 与 `content` 组成:`system` 放角色设定,`user` 放本次要处理的任务; 字符串里的双引号要转义,单元格文本里的换行符要先替换成 `\n`,否则整段 JSON 直接判为非法。
```json
{
"model": "<模型ID>",
"messages": [
{"role": "system", "content": "你是数据分析助手"},
{"role": "user", "content": "<待处理内容>"}
]
}
```
拼接时最容易忽略的是引号:VBA 里写双引号要连写两次,字段一多就容易漏,建议先把请求体拼好、再整段交给校验工具过一遍。
发请求时为什么要显式指定 UTF-8 编码?
因为 VBA 字符串本身是 Unicode,直接 `send` 会按本地代码页转换,中文一到服务端就变成问号或乱码。
发送侧:用 `ADODB.Stream` 把 JSON 写入后设 `Charset = "utf-8"`,取字节数组再交给 `send`; 接收侧:优先读 `responseBody` 字节再按 UTF-8 解码,比直接读 `responseText` 稳定; 超时:用 `setTimeouts` 把解析、连接、发送、接收四个阶段统一放宽,接口返回长文本时尤其明显; 同步:`open` 的第三个参数设为 `False`,请求返回后结果就能直接接回单元格。
返回的 JSON 怎么解析并写回单元格?
真正要取的是 `choices` 数组第一条里的 `message.content`,其余字段多用于监控和排查。
取值路径固定,但不要用 `InStr` 硬切字符串,字段顺序一变就崩; 需要结构化结果时,让模型直接按 JSON 输出,再逐字段拆到不同列; 长文本写回前先给单元格开自动换行,避免一屏只能看到一个开头; `usage` 字段可以顺手记录,用来做调用量监控。
课程第二天的实战演练把这一层接到了具体表结构上:拆分工作表、合并工作簿、AI 智能化公式(vlookup 与 match 组合)、AI 智能化生成可更新的图表。
调用 DeepSeek API 常见的报错怎么排查?
先看 HTTP 状态码,再对号入座,绝大多数问题都落在下面几类里。
关于 VBA 调用 DeepSeek API 的常见问题有哪些?
Q:密钥能不能直接写在宏里?
A:能跑,但不建议。写死在模块里的密钥一旦随文件外发就等于泄露,更稳妥的做法是放在隐藏工作表、环境变量或外部配置文件里,代码只读引用。
Q:不装任何第三方库能调通吗?
A:可以。`MSXML2.ServerXMLHTTP` 和 `ADODB.Stream` 都是系统自带组件,用 `CreateObject` 后期绑定即可;JSON 解析可以自己写轻量函数,复杂结构再考虑引用外部模块。
Q:一次请求能不能处理一整列数据?
A:可以,但要控制频率。更稳的做法是把多条内容拼进同一次请求,让模型返回结构化 JSON 后按行写回,既减少调用次数,也避开逐行请求时的限流。
Q:为什么同样的提示词,返回结果每次都不一样?
A:大模型输出带随机性,属正常现象。要稳定就把任务表述写得更明确、把输出格式固定下来(例如要求按 JSON 输出),再用代码校验,而不是靠反复重试碰运气。
Q:VBA 调 DeepSeek API 的关键步骤可以记成什么?
A:记住四句话——① 密钥不写死在宏里,从配置文件或环境变量取;② 请求体先拼成合法 JSON,中文按 UTF-8 发出去;③ 超时显式配置,同步发送并加错误捕获;④ 返回体按 choices[0].message.content 取值,校验后再写回单元格。
从宏录制到 AI 智能分析的技能路径大概怎么走?
这条路径从 VBA 的对象模型起步,中间接上 DeepSeek 的 API 调用,最后落到具体业务场景。
前半程熟悉宏、模块与对象模型,把 Range、Worksheet、Workbook 三类对象的操作理顺;接着进入变量作用域与流程控制,让脚本能自己判断和循环;第三步才是与 DeepSeek 结合——从 Excel 读取数据、向接口发请求、把返回结果落回表格,并补上错误处理与使用监控;最后是场景化实战,包括智能数据分析、预测建模、RFM 分析,以及拆分工作表、合并工作簿、AI 智能化公式与可更新图表的演练。整条路径以 2 天集中实战(16 课时)的形式展开,围绕案例实操推进,对有一定 Excel 基础、编程零基础或入门水平的学员均适用。
这一期《AI赋能EXCEL VBA开发实战》在 9 月 28 日开班,课程时长 2 天(16 课时)。想确认自己目前的 Excel 基础是否适合,或要课程资料与报名方式,可以在后台留言或私信,小艾老师帮你对接课程顾问。