DeepSeek接入WPS、Word、Excel:VBA宏调用API零基础实战指南

发布时间:2026/10/3 6:06:25
DeepSeek接入WPS、Word、Excel:VBA宏调用API零基础实战指南
这半个月我陆陆续续帮好几个朋友把DeepSeek接进了他们常用的WPS、Word和Excel。操作本身并不复杂真正拦住他们的一直是“不知道从哪下手”。网页版的DeepSeek确实好用但每次要把答案搬进文档都得复制、粘贴、重新排版写报告时来回切窗口能把人切疯。把DeepSeek“装”进办公软件本质上就是让Word、Excel、WPS在后台悄悄调用一次DeepSeek的接口然后把AI回复直接填进单元格、替换选中的文字这样你在写方案的时候完全不用离开文档。这篇指南面向完全没接触过编程的小白。先从概念入手再分别讲Excel、Word、WPS三种环境的接入方式最后把我踩过、也帮人排查过的一堆坑一次性列清楚。所有代码我都会给全你只需要复制、粘贴、填上自己的API Key。1. 先搞清楚所谓“引入DeepSeek”到底是哪个层面的操作1.1 常见的几种“引入”形态先对号入座把AI塞进Office有四种常见玩法网上信息很乱好多教程混着讲小白很容易看懵。我按门槛和可控性排个序网页版手动复制零成本但每次都要切窗口、调格式谈不上“引入”。VBA宏直接调用APIOffice/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代码里同事拿到你的文档按一下AltF11就能看到。私用没问题外发工作簿之前记得删掉宏或者给VBA工程加个访问密码加密码也防不了高手但至少能挡住误看。2.2 一次API调用到底是怎么回事点餐模型为了后面调试不抓瞎我用点餐打个比方。你在文档里选中一段文字、点了“润色”按钮背后的流程是你的文档顾客把要处理的文字连同要求写在一张“点餐单”上这张单子的格式叫JSON。宏里的HTTP请求对象服务员把这张单送到DeepSeek的服务器后厨送单地址是固定的URL身上贴着“会员卡”API Key。模型在后厨做好菜生成回复服务员原样端回来同样是一个JSON。宏从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里按AltF11打开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; charsetutf-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→运行”或者直接按AltF8打开宏列表再运行。它会逐行请求本质上相当于“逐行打电话”几十行数据就是几十次请求要有耐心同时留意API费用。3.4 保存、启用宏和计算模式这三大坑用宏的工作簿必须保存成xlsm格式启用宏的工作簿否则下次打开函数就会变成#NAME?。另外第一次打开别人的宏文件Excel默认禁用宏需要在“文件→选项→信任中心→信任中心设置→宏设置”里启用。个人电脑可以选“启用所有宏”公司电脑就听IT部门的规矩别自己乱开。还有一个特别容易坑到人的点自定义函数DeepSeekAsk是“网络函数”不是普通Excel函数那种毫秒级返回。如果你开着自动重算Excel里任何无关操作都可能触发它重新请求一遍造成“表格卡死”的错觉。建议同时使用了多个AI函数的场景下把计算模式改成手动公式→计算选项→手动需要用的时候再按CtrlAltF9手动重算。单元格里只有一两个AI函数的话影响不大不用太紧张。4. Word接入实战让选中的文字一键被润色、翻译、压缩4.1 同一个函数换一个宿主Word里的做法和Excel如出一辙。按AltF11打开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完全一样了按AltF11打开宏编辑器把第3.1节的代码粘贴进去Excel和Word里能用的函数、宏在WPS表格和WPS文字里一样能用。我实测过标准的HTTP请求在WPS VBA里没有障碍因为底层调用的是Windows自带的网络对象。5.2 如果你的WPS是较新版本可以试试JS宏WPS从2019版本开始逐步支持JS宏也叫JSAJavaScript 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;charsetutf-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改成符合自己行业的话术比如公文写作、周报总结、合同审阅这个方案能玩出的花样比你想的要多得多。