☰
DeepSeek接入WPS、Word、Excel:VBA宏调用API零基础实战指南
2026/10/3 6:06:23 网站建设 项目流程

这半个月,我陆陆续续帮好几个朋友把DeepSeek接进了他们常用的WPS、Word和Excel。操作本身并不复杂,真正拦住他们的一直是“不知道从哪下手”。网页版的DeepSeek确实好用,但每次要把答案搬进文档都得复制、粘贴、重新排版,写报告时来回切窗口能把人切疯。把DeepSeek“装”进办公软件,本质上就是让Word、Excel、WPS在后台悄悄调用一次DeepSeek的接口,然后把AI回复直接填进单元格、替换选中的文字,这样你在写方案的时候完全不用离开文档。

这篇指南面向完全没接触过编程的小白。先从概念入手,再分别讲Excel、Word、WPS三种环境的接入方式,最后把我踩过、也帮人排查过的一堆坑一次性列清楚。所有代码我都会给全,你只需要复制、粘贴、填上自己的API Key。

1. 先搞清楚所谓“引入DeepSeek”到底是哪个层面的操作

1.1 常见的几种“引入”形态,先对号入座

把AI塞进Office有四种常见玩法,网上信息很乱,好多教程混着讲,小白很容易看懵。我按门槛和可控性排个序:

  • 网页版+手动复制:零成本,但每次都要切窗口、调格式,谈不上“引入”。
  • VBA宏直接调用API:Office/WPS自带的功能,写一个自定义函数,在Excel单元格里输入=DeepSeekAsk("..."),或者在Word里选中文字执行宏。这是本文的重点,可控性强、费用低。
  • 第三方AI加载项:在应用商店里装现成的插件,有些支持填自己的API地址和Key,确实能用上DeepSeek的模型,但要受插件功能限制。
  • 本地部署模型再接入:硬件门槛高,胜在免费和数据安全,适合进阶玩家。

对于小白,我最推荐的是第二种。理由很简单:不装额外软件,代码一次写好处处能用,而且你能真正搞懂背后发生了什么,出问题也知道往哪查。

1.2 VBA这条路线,账也算得过来

很多人一听“写宏”就头大,觉得是程序员才干的事。其实VBA宏就是一段录在文档里的操作脚本,我们现在要做的,是让这个脚本去“打一个电话”给DeepSeek的服务器。函数怎么调用、请求怎么发送,这些都是现成模式,不需要你从零学编程,会复制粘贴就行。

费用上也算得过来:DeepSeek的API按token计费,官网充值最低10块钱,日常在文档里润色句段、写点公文内容,能用很久。相比之下,第三方AI插件年费动辄几百,接口还未必给你自定义的机会。自己接一次API,等于把主动权攥在自己手里。

1.3 先管理好预期:它在你文档里能干什么

我不建议你对“AI进Office”抱有不切实际的幻想,至少想清楚这几件事:

  • Excel里最实用的场景是:把单元格里的需求或数据发给模型,让它生成公式、翻译文本、写小结、解释数据。注意,它能“分析数据”,但不等于它会自动读取你整个表格的几百行内容,默认情况下它只看得见你通过单元格传过去的那段文字。
  • Word里最实用的场景是:选一段文字,一键润色、翻译、压缩、改正式语气。这是体验最好的用法,因为文档本来就是文字处理的战场。
  • 所有场景下,AI都可能出错。合同条款、财务数据这类高风险内容,接回来的结果必须人工复核。这个提醒不是废话,是真有人把AI生成的财务报表摘要直接用进报告,结果没核对出错的。

2. 准备阶段:注册API、弄懂原理、检查环境

2.1 去DeepSeek开放平台拿到你的API Key

第一步,打开DeepSeek开放平台(platform.deepseek.com),用手机号注册登录。登录后左侧菜单找到“API Keys”,点新建,创建一条密钥,复制保存好。这个密钥通常以sk-开头,相当于你的“账号+密码”。

这里有几个细节需要提前知道:

  • API和网页版是两套计费体系。网页聊天免费,API按token收费。新用户一般有赠送额度,但用完就需要充值,最低充值金额通常是10元。
  • API Key只会在创建时完整显示一次,关掉页面就看不到了,只能删掉重建。拿到手先存进记事本。
  • 不要把含Key的文档发给别人。Key存在VBA代码里,同事拿到你的文档按一下Alt+F11就能看到。私用没问题,外发工作簿之前记得删掉宏,或者给VBA工程加个访问密码(加密码也防不了高手,但至少能挡住误看)。

2.2 一次API调用到底是怎么回事:点餐模型

为了后面调试不抓瞎,我用点餐打个比方。你在文档里选中一段文字、点了“润色”按钮,背后的流程是:

  1. 你的文档(顾客)把要处理的文字连同要求写在一张“点餐单”上,这张单子的格式叫JSON。
  2. 宏里的HTTP请求对象(服务员)把这张单送到DeepSeek的服务器(后厨),送单地址是固定的URL,身上贴着“会员卡”(API Key)。
  3. 模型在后厨做好菜(生成回复),服务员原样端回来,同样是一个JSON。
  4. 宏从JSON里把content字段的内容提取出来,填到单元格或替换选中的文字。

所以你需要先记住三个固定要素:

要素取值作用
请求地址https://api.deepseek.com/chat/completions告诉宏往哪发请求
鉴权头Authorization: Bearer sk-你的Key证明你是谁
模型名deepseek-chat 或 deepseek-reasoner决定用哪个大脑

deepseek-chat适合日常对话、写作、润色,反应快;deepseek-reasoner适合数学推理、复杂分析,思考更深入但更慢更贵。文档日常场景,默认用deepseek-chat就好。

2.3 本地环境检查:别装完了才发现用不了

动手之前花两分钟确认三件事:

  • 办公软件版本。Office 2010以上基本没问题,Microsoft 365体验最好。WPS要看版本,个人版需要额外装VBA组件,这个我在第5节单独讲。
  • Excel和Word里能不能看到“开发工具”选项卡。Office里在“文件→选项→自定义功能区”右侧勾选“开发工具”。WPS在“文件→选项”里做类似处理。
  • 网络连通性。DeepSeek是国内的API服务,正常联网就能访问,没有额外障碍。但有些公司内网会限制外部HTTP请求,如果你在办公电脑上调用失败,换手机热点却能成功,多半就是公司网络策略的问题,这个只能找IT部门协调。

3. Excel接入实战:写一个能在单元格里直接调用的函数

3.1 打开VBA编辑器,把基础代码粘进去

Excel里按Alt+F11打开VBA编辑器(或者点“开发工具→Visual Basic”),在左侧工程资源管理器里找到当前工作簿,右键→插入→模块。这个模块就是放代码的地方。

把下面的代码完整复制进去:

' ========== DeepSeek API 调用模块 ========== ' 适用:Excel / Word / WPS(已装VBA组件) ' 使用前请把 API_KEY 换成你自己的 Public Const API_KEY As String = "sk-你的key" Public Const API_URL As String = "https://api.deepseek.com/chat/completions" Public Const MODEL_NAME As String = "deepseek-chat" ' 核心函数:传入prompt,返回AI回答 Public Function DeepSeekAsk(prompt As String) As String On Error GoTo ErrHandler Dim http As Object ' 如果 WinHttp.WinHttpRequest.5.1 创建失败,可改为: ' Set http = CreateObject("MSXML2.XMLHTTP") Set http = CreateObject("WinHttp.WinHttpRequest.5.1") Dim body As String body = "{""model"":""" & MODEL_NAME & """,""messages"":[{""role"":""user"",""content"":""" & EscapeJson(prompt) & """}]}" http.Open "POST", API_URL, False http.setRequestHeader "Content-Type", "application/json; charset=utf-8" http.setRequestHeader "Authorization", "Bearer " & API_KEY http.setTimeouts 10000, 10000, 10000, 60000 http.Send body If http.Status = 200 Then DeepSeekAsk = ExtractContent(http.responseText) Else DeepSeekAsk = "请求失败,状态码:" & http.Status & "," & http.responseText End If Exit Function ErrHandler: DeepSeekAsk = "出错了:" & Err.Description End Function ' 对prompt中的特殊字符做JSON转义,防止请求格式错误 Private Function EscapeJson(s As String) As String s = Replace(s, "\", "\\") s = Replace(s, """", "\""") s = Replace(s, vbCrLf, "\n") s = Replace(s, vbLf, "\n") s = Replace(s, vbTab, "\t") EscapeJson = s End Function ' 从API返回的JSON里提取content字段(精简版,日常够用) Private Function ExtractContent(json As String) As String Dim key As String key = """content"":""" Dim p As Long p = InStr(json, key) If p = 0 Then ExtractContent = json Exit Function End If p = p + Len(key) Dim res As String, c As String, n As String res = "" Do While p <= Len(json) c = Mid(json, p, 1) If c = "\" Then n = Mid(json, p + 1, 1) Select Case n Case "n": res = res & vbCrLf Case "t": res = res & vbTab Case """": res = res & """" Case "\": res = res & "\" Case Else: res = res & n End Select p = p + 2 ElseIf c = """" Then Exit Do Else res = res & c p = p + 1 End If Loop ExtractContent = res End Function

这段代码整体上分成三层:DeepSeekAsk是入口,EscapeJson负责把文字里的引号、换行符转义成JSON能认的格式,ExtractContent负责从返回的一大坨JSON里把真正有用的content字段抠出来。三个函数各管一件事,思路清晰,后面Word和WPS里还会继续复用它。

3.2 当场测一下:在单元格里直接调用

回到Excel表格,随便找个空单元格输入:

=DeepSeekAsk("用一句俏皮话推荐这个产品,产品名:便携咖啡机")

按下回车,Excel会卡一两秒甚至更久,这是正常的——它在等远程服务器的回复。第一次可能慢一点,几秒到几十秒都正常。等函数把内容返回,单元格里就会出现一句推荐文案。

如果你想基于单元格内容动态提问,可以这样写:

=DeepSeekAsk(A1 & " 帮我翻译成英文")

这个用法很关键,它意味着你可以把需求写在A列、AI回答生成在B列,做成一个“批量小工厂”。比如A列是产品名,B列用这行公式,下拉填充,几十个产品的宣传语就都有了。

3.3 批量处理:给选中区域的每一行都问一遍

单元格函数适合单发,批量场景建议用宏。下面这个宏会把选中区域第一列的每个单元格内容发给DeepSeek,把结果写在右边一列:

Public Sub BatchAsk() Dim cell As Range Dim prompt As String For Each cell In Selection.Columns(1).Cells If Trim(cell.Value) <> "" Then prompt = "你是资深文案编辑。请根据产品名写一句不超过30字的宣传语。产品名:" & cell.Value cell.Offset(0, 1).Value = DeepSeekAsk(prompt) End If Next cell End Sub

选中A2:A100的产品名,打开“开发工具→宏→选择BatchAsk→运行”,或者直接按Alt+F8打开宏列表再运行。它会逐行请求,本质上相当于“逐行打电话”,几十行数据就是几十次请求,要有耐心,同时留意API费用。

3.4 保存、启用宏和计算模式这三大坑

用宏的工作簿必须保存成xlsm格式(启用宏的工作簿),否则下次打开函数就会变成#NAME?。另外,第一次打开别人的宏文件,Excel默认禁用宏,需要在“文件→选项→信任中心→信任中心设置→宏设置”里启用。个人电脑可以选“启用所有宏”,公司电脑就听IT部门的规矩,别自己乱开。

还有一个特别容易坑到人的点:自定义函数DeepSeekAsk是“网络函数”,不是普通Excel函数那种毫秒级返回。如果你开着自动重算,Excel里任何无关操作都可能触发它重新请求一遍,造成“表格卡死”的错觉。建议同时使用了多个AI函数的场景下,把计算模式改成手动(公式→计算选项→手动),需要用的时候再按Ctrl+Alt+F9手动重算。单元格里只有一两个AI函数的话,影响不大,不用太紧张。

4. Word接入实战:让选中的文字一键被润色、翻译、压缩

4.1 同一个函数,换一个宿主

Word里的做法和Excel如出一辙。按Alt+F11打开Word的VBA编辑器,插入一个新模块,把第3.1节那三个函数原样粘贴进去。这里不需要修改任何内容,因为请求逻辑与宿主无关。

区别只体现在调用方式:Word里面对的不是单元格,而是“选中的一段文字”。所以我们需要额外写几个专门处理选区的宏。

4.2 三个最实用的宏:润色、翻译、缩写

在同一个模块里继续粘贴:

' 润色:让AI改写选中文字,保留原意 Public Sub AiPolish() If Selection.Type <> wdSelectionNormal Then MsgBox "请先选中一段文字" Exit Sub End If Dim t As String t = Selection.Range.Text Dim result As String result = DeepSeekAsk("请对以下文字进行润色,要求流畅自然、逻辑清晰,只输出润色结果,不要解释:" & vbCrLf & t) If Not ConfirmReplace(result) Then Exit Sub Selection.Range.Text = result End Sub ' 翻译:中英互译 Public Sub AiTranslate() If Selection.Type <> wdSelectionNormal Then MsgBox "请先选中一段文字" Exit Sub End If Dim t As String t = Selection.Range.Text Dim result As String result = DeepSeekAsk("请把下面的文字翻译成英文,只输出译文:" & vbCrLf & t) If Not ConfirmReplace(result) Then Exit Sub Selection.Range.Text = result End Sub ' 缩写:把长文压成三句话 Public Sub AiShorten() If Selection.Type <> wdSelectionNormal Then MsgBox "请先选中一段文字" Exit Sub End If Dim t As String t = Selection.Range.Text Dim result As String result = DeepSeekAsk("请把下面的文字压缩成三句话概括,保留关键信息:" & vbCrLf & t) If Not ConfirmReplace(result) Then Exit Sub Selection.Range.Text = result End Sub ' 替换前二次确认,防手滑 Private Function ConfirmReplace(newText As String) As Boolean Dim resp As VbMsgBoxResult resp = MsgBox("AI返回结果如下(最多预览300字):" & vbCrLf & vbCrLf & Left(newText, 300) & vbCrLf & vbCrLf & "确认用这个结果替换选中的文字?", vbYesNo + vbQuestion, "确认替换") ConfirmReplace = (resp = vbYes) End Function

这几个宏的逻辑几乎一样:取选中文字→构造prompt→调用DeepSeekAsk→弹窗确认→替换。你完全可以照着模板改成“写标题”“改正式语气”“提取要点”等任何需求,关键就是改一下prompt里的那句话。这块最值得玩,因为不需要额外学语法,改中文文字就行。

4.3 给宏加个按钮,别每次都进菜单

宏写好了,每次都去“视图→宏→查看宏→运行”太慢。把它加到快速访问工具栏是小白也能操作的一步:文件→选项→快速访问工具栏→“从下列位置选择命令”里选“宏”→找到AiPolish→添加→确定。之后Word窗口上方那个小工具条上就有个按钮,选中文字点一下就行。

想更讲究一点,可以给按钮换个图标:在“快速访问工具栏”设置里选中该项,点“修改”,挑一个顺眼的符号。顺手把AiTranslate、AiShorten也加上,日常使用会顺手很多。

4.4 一个小习惯:别让AI“裸奔”替换你的原稿

经常有人问“AI把原文字改了怎么办”。我的习惯是:重要文档先“另存为”一份副本再跑宏;每个宏里都保留替换前确认弹窗,嫌麻烦可以删掉那段确认,但我劝你留着。弹窗有一个附带的好处:在替换之前,你就有机会看一眼AI的输出质量,明显不对劲的时候直接点“否”,原稿分毫不动。

还有一个更稳的变通:把确认弹窗去掉,改成“把结果插入到文档末尾或新建文档”。这样原稿一字不动,对比着看也方便。加个新的宏:

Public Sub AiToNewDoc() If Selection.Type <> wdSelectionNormal Then MsgBox "请先选中一段文字" Exit Sub End If Dim result As String result = DeepSeekAsk("请对下面的文字进行润色:" & vbCrLf & Selection.Range.Text) Dim newDoc As Document Set newDoc = Documents.Add newDoc.Content.Text = result End Sub

这个宏会把AI结果输出到新文档,原文档完全不碰,适合处理那些“只可参考、不可覆盖”的初稿。

5. WPS的差异化处理:VBA组件、JS宏和不写代码的备胎路线

5.1 WPS的VBA现状:不是所有版本都自带

WPS用户最容易卡在第一步:打开WPS的“开发工具→VB编辑器”,结果发现根本没有VB编辑器,或者点了没反应。原因很简单——WPS个人版默认没有集成完整VBA模块,需要额外安装“VBA for WPS”组件。装好之后,开发工具选项卡里才会出现VB编辑器入口。

这里说一句大实话:网上搜“WPS VBA”会出来一大堆乱七八糟的下载站,甚至还有人借机传播“WPS破解版”。千万别装破解版,一是安全风险高,有些安装包会捆绑木马;二是破解版通常会阉割组件更新,反而可能越装越乱。从WPS官网或可信的软件商店渠道找VBA组件就行,WPS官方社区也有相关指引。

装上VBA组件后,操作就和Office完全一样了:按Alt+F11打开宏编辑器,把第3.1节的代码粘贴进去,Excel和Word里能用的函数、宏,在WPS表格和WPS文字里一样能用。我实测过标准的HTTP请求在WPS VBA里没有障碍,因为底层调用的是Windows自带的网络对象。

5.2 如果你的WPS是较新版本,可以试试JS宏

WPS从2019版本开始逐步支持JS宏(也叫JSA,JavaScript for Applications),用JavaScript写宏。入口在“开发工具→JS宏”。如果你不想装VBA组件,可以试试这个路子,代码长得很不一样,但思路完全一样:

function DeepSeekAsk(prompt) { var url = "https://api.deepseek.com/chat/completions"; var apiKey = "sk-你的key"; var body = { model: "deepseek-chat", messages: [{ role: "user", content: prompt }], stream: false }; var xhr = new XMLHttpRequest(); xhr.open("POST", url, false); xhr.setRequestHeader("Content-Type", "application/json;charset=utf-8"); xhr.setRequestHeader("Authorization", "Bearer " + apiKey); xhr.send(JSON.stringify(body)); var resp = JSON.parse(xhr.responseText); return resp.choices[0].message.content; } function 润色JS宏() { var s = Selection.Text; var result = DeepSeekAsk("请润色:" + s); alert(result); }

需要提醒的是,JSA的网格请求对象在不同版本WPS里的支持情况有差异。如果运行时报“XMLHttpRequest未定义”,说明这个版本没开放网络请求API,那就回到VBA方案,或者用下一节的“不写代码”路线。我在几个同事的电脑上实测过,新版本WPS 365基本能用,旧版本不一定,别在JS宏上死磕太久。

5.3 实在不想折腾?给你三条不写代码的替代路线

如果你的目标只是“在WPS里方便地用上AI”,还有三条路:

  • 用WPS自带的AI功能。新版WPS内置了WPS AI,虽然模型不是DeepSeek,但日常写作、总结、生成PPT确实方便,不用任何配置,适合对模型没有执念的人。
  • 在Office/WPS应用商店里找AI类加载项。有些加载项支持自定义接口地址和API Key,你把DeepSeek的地址和Key填进去,就能在文档侧边栏和DeepSeek对话。这个方法胜在零代码,缺点是插件质量参差不齐,注意看评价和更新日期。
  • 网页版+分屏。把DeepSeek网页和WPS文档窗口左右分屏,这边选中文字复制过去,那边把回复复制回来。土,但永远是兜底方案。

我个人的排序是:装了VBA就用宏,装不了VBA就考虑JS宏,两头都不行就分屏。别为了接AI去装一堆来路不明的软件,不值当。

6. 实战中的坑:从“Excel无法复制粘贴”到“Word关闭时卡顿”

6.1 Excel突然无法复制粘贴,多半是请求把界面占死了

用宏调用API时,Excel会短暂进入“忙”状态,因为HTTP请求是同步的——程序在等服务器回复,期间不能做别的操作。如果你在等待时疯狂点击单元格、试图复制粘贴,就可能出现“单元格复制后粘贴不了”的假象。

解决办法很直接:

  • 请求期间不要乱点,等函数返回再操作。
  • 如果已经卡住,按Esc试着中断宏,再不行就等它超时(代码里设了60秒总超时)。
  • 如果彻底卡死,打开任务管理器结束Excel进程,重启后检查是否有第三方剪贴板工具、输入法插件在抢剪贴板。很多人遇到的“Excel无法复制粘贴”其实和AI无关,是这类插件冲突导致的,在“文件→选项→加载项”里禁用不认识的COM加载项往往能解决。

6.2 Word关闭时卡顿,先查加载项,再看自动宏

Word关闭时卡顿几秒甚至十几秒,最常见原因是加载项在关闭时执行了某种清理或同步操作。如果这个问题恰好出现在你装了VBA宏之后,重点检查两处:

  • 文件→选项→加载项→管理COM加载项→取消勾选不需要的插件。
  • 检查Normal.dotm模板里有没有残留的自动宏。

我的建议很明确:不要图方便把DeepSeek请求写进Document_Open、Document_Close这类自动事件里。有人想让文档一打开就自动调AI,结果每次开Word都要等几十秒网络请求,关文档又卡一次,体验非常差。AI调用必须是“手动触发”的,比如按钮、快捷键,而不是随文档生命周期自动执行。

6.3 请求报错,按状态码对症下药

遇到API请求失败,先看返回的“状态码”,基本就能定位:

状态码/现象大概率原因处理方法
401API Key错误或已删除回开放平台重新生成,检查Key前后有没有多余空格
402或余额不足提示账户欠费充值,注意API余额和网页对话额度不通用
429请求太频繁触发限流稍等几秒重试,批量处理时在循环里加延时
408或连接超时高峰时段服务器繁忙换deepseek-chat模型,或错峰重试
JSON解析后内容为空响应格式变化或网络代理干扰先把responseText输出到单元格看原始内容再排查

我见过最多的情况是两个:一是Key复制的时候多了一个空格,二是办公电脑走了内部代理导致连接被重置。前者肉眼很难发现,排查时多留意。

6.4 中文乱码或转义字符跑飞

如果单元格里看到的是一堆\uXXXX开头的转义字符,说明我给的ExtractContent函数没能正确解析Unicode。这种情况在纯中文场景里其实不太常见,但遇到也别慌,有两条路:一是升级解析方案,去GitHub搜“VBA-JSON”库,把JsonConverter.bas导入工程,然后用标准方式取值;二是调整prompt,要求AI“不要输出任何特殊符号或Markdown标记”。日常用,我给的简化版足够。

6.5 进阶思路:把API地址换成自己的本地模型

如果你有中高配显卡,想省API费用或者对数据敏感,可以考虑本地部署DeepSeek模型。本地部署最常用的是Ollama这类工具,装好之后会在本地起一个OpenAI兼容的接口,地址是http://127.0.0.1:11434/v1/chat/completions。

这时候,前面代码里只需要改三个地方,就能把同一个VBA函数指向本地模型:

Public Const API_URL As String = "http://127.0.0.1:11434/v1/chat/completions" Public Const API_KEY As String = "ollama" ' 本地接口不校验Key,随便填 Public Const MODEL_NAME As String = "deepseek-r1:7b"

好处是免费、离线可控、数据完全不出本机,坏处是7B级别的小模型能力比云端满血版差一大截,生成速度也看显卡。我的建议是,文档润色这类轻任务可以本地跑,复杂分析还是老老实实用API。

6.6 其他被问爆的小问题速查

  • WPS里MathType突然不见了:去“开发工具→加载项”检查是否被禁用或丢失,重新勾选添加。装了VBA组件后偶尔会把其他加载项挤掉,重新注册一下就好。
  • 生成的文本带一堆**、-这类Markdown符号:在prompt末尾加一句“不要输出Markdown标记,输出纯文本”。
  • 单元格显示#NAME?:函数名没识别,检查宏是否启用、工作簿是否保存为xlsm。
  • 想把AI返回的公式、表格原样搬进Word:让AI以Markdown表格或公式形式输出,整体复制到支持Markdown转Word的工具(比如Typora导出、pandoc转换),再微调格式,比手动粘贴靠谱得多。
  • 手上有Mac版Excel:本文方案基于Windows系统,Mac版Excel虽然能跑VBA,但没有WinHttp组件,需要换一套原生的网络请求方式,小白不建议碰。

最后再分享一个我使用中养成的小习惯:不要只在单一场景里用这些宏,把它们组合起来。Word里润色完的段落,拿到Excel做一个批量摘要,再让AI把摘要翻译成英文放进邮件——同一个DeepSeekAsk函数在不同软件里各干各的活,反而构成了一条完整的办公流水线。你也不一定完全按我的模板来,把prompt改成符合自己行业的话术,比如公文写作、周报总结、合同审阅,这个方案能玩出的花样比你想的要多得多。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询