最近好几个朋友问我同一个问题:能不能在WPS、Word、Excel里直接调用deepseek,让我写文档、整理表格的时候不用来回切换网页?答案是能,而且门槛没有想象中那么高。这篇文章就是一份小白向的实战指南,把从申请密钥到写第一个可用宏的完整过程都拆开讲清楚,顺便把我踩过的坑都列出来。不管你是做行政、写材料,还是经常和Excel表格打交道,只要愿意动手十分钟,就能在Office里用上AI助手。
1. 先搞清楚一件事:deepseek进Office到底有几种路子
1.1 三条主路线的对比
在动手之前,先别急着找代码,把思路理清楚比什么都重要。所谓“把deepseek引入WPS、Word、Excel”,本质上不是装一个悬浮窗口,而是让你的Office软件能够把一段文字、一份表格数据发给DeepSeek的接口,等AI处理完再拿回结果。理解这一点,后面所有操作都不会跑偏。
目前最常见的玩法有三条路线。第一条是复制粘贴人工流,也是很多小白已经在用的方式:把文档内容复制到网页版DeepSeek对话框,等结果出来再复制回来。这种方法零成本、零门槛,但来回切换窗口非常打断思路,批量处理表格数据时尤其痛苦。第二条是找现成的Office AI插件或者加载项,装上之后在侧边栏或工具栏里直接输入问题,这类工具很多,部分还是开源的,但质量参差不齐,有的更新慢、有的会在一次错误后整个功能罢工。第三条是自写VBA宏,通过调用DeepSeek官方API,让Office自己发请求、收结果,这是我要重点推荐给入门用户的路线。
三条路线我用一张表说清楚:
| 方案 | 上手难度 | 可定制性 | 隐私安全 | 成本 | 适合谁 |
|---|---|---|---|---|---|
| 复制粘贴人工流 | 最低 | 低 | 取决于AI平台 | 低 | 偶尔用AI的普通用户 |
| 现成插件/加载项 | 较低 | 中 | 中 | 部分免费 | 不想写代码、想一键用的用户 |
| VBA宏调用API | 中 | 高 | 中高 | 按API用量计费 | Excel/Word重度用户 |
| 本地部署+API兼容接口 | 高 | 高 | 最高 | 需要硬件投入 | 对数据敏感的技术用户 |
1.2 为什么我推荐从“API + VBA”起步
很多听到“VBA”就头大的朋友,我给一个定心丸:我们不需要学完整的VBA,只需要用最少的代码把一次HTTP请求发出去。VBA本来就能发网络请求,DeepSeek的API和大多数大模型接口一样,本质上就是一个网址加一串JSON字符,你向它提问,它返回一段JSON,解析出来就能用。
我试过现成插件,也试过自己写宏,最后长期留在身边的还是自写的宏。原因有三个。第一,可控性强,数据从哪里来、送到哪里去、结果写进哪个单元格,全部自己说了算,不会有莫名奇妙的上传行为;第二,接口是DeepSeek官方提供的,只要Key不过期,基本不存在插件停更导致没法用的问题;第三,代码写一次能一直复用,从Excel扩展到Word,改动不超过一半。
还有一个很现实的理由:DeepSeek的API当前价格确实低,日常写文档、润色几句、处理几十行表格,花费可以忽略不计。你不需要买额外会员,也不受账号登录地域限制,只要网络能访问官网就能调通。
2. 准备工作:API Key、VBA环境、安全策略
2.1 申请DeepSeek API Key的完整流程
先说API Key是什么。你可以把它理解成一把钥匙,Office软件拿着这把钥匙去访问DeepSeek的服务器,服务器认钥匙不认人。流程很简单,先到DeepSeek开放平台注册一个账号,登录后在控制台左侧找到API Keys入口,点“创建API Key”,给它起个名字,系统会生成一串以sk-开头的密钥,复制保存下来就行。
这里有两个容易踩的坑。第一,API Key只显示一次,关闭页面后就再也看不到了,如果不小心弄丢,只能删掉重新创建。第二,这个Key本质上等于你的钱袋子,因为DeepSeek是付费接口,Key泄露意味着别人能用你的账号调用模型,产生费用。所以我一般建议创建Key时顺手在平台后台设置一个每月调用限额,万一泄露也能把损失控制在几十块钱以内。
创建完Key,再顺手给账号充一点余额。DeepSeek的API是预充值模式,没有余额会直接报错。充值金额不用多,新用户日常使用十块钱能用很久,我自己的账号充了五十块用了好几个月还没花完。平台通常也有新用户赠送额度,可以先看赠送额度够不够,不够再充。
2.2 VBA环境检查:Office与WPS的区别
接下来要看你的软件环境支不支持跑VBA。微软Office自带完整的VBA支持,不需要额外安装,打开Excel或Word后,按下Alt+F11能弹出VBA编辑器窗口,说明环境没问题。如果你的Excel是Mac版,路径会不太一样,Mac版Office的VBA支持在“工具-宏-Visual Basic编辑器”里,核心代码逻辑和Windows版基本一致,只有快捷键不同。
WPS这边情况略复杂。WPS个人版默认不带VBA功能,需要单独安装VBA for WPS支持库。判断方法很简单:打开WPS表格,看看“开发工具”选项卡是否存在,如果能看到“宏”按钮,说明环境已经支持;如果“开发工具”选项卡整个都找不到,先到文件-选项-自定义功能区里把“开发工具”勾选启用,然后再去WPS官网或官方社区找对应的VBA组件安装。注意,WPS的64位版本一定要安装64位的VBA组件,32位版本装32位组件,版本不匹配会提示运行时错误或者干脆找不到VBA库。
2.3 开始之前必做的安全设置
宏脚本是用代码操控Office,所以Office默认都会对宏做安全限制。如果你写好了宏却运行时报“无法运行宏”或者提示“宏已被禁用”,十有八九是安全级别拦住了。
打开文件-选项-信任中心-宏设置,把“宏设置”改成“启用宏”或者在运行时手动选择启用。这里不建议把安全级别调到最低“无限制”然后一直开着,因为你没法保证机器上其它文档来源可靠。真正的项目文件永远放在一个自己建立的受信任位置文件夹里,让Office信任这个文件夹就够用了。
还要提醒一句:不要随便从网上下载号称“破解版”或“绿色版”的WPS和Office,这类修改过的软件常被植入恶意代码,用宏的时候风险更高。正规软件就能跑VBA,不用冒这个险。
3. 实操:写出第一个能用的AI助手宏
3.1 Excel版:选中数据一键让DeepSeek分析
我讲得慢一点,跟着步骤走。打开Excel,按Alt+F11打开VBA编辑器,在左侧工程资源管理器中右键你的工作簿名称,选择“插入-模块”,然后把下面的代码复制进去。
Function AskDeepSeek(ByVal prompt As String) As String Dim http As Object Dim body As String Dim apiKey As String Dim url As String Dim stream As Object apiKey = "在这里填入你的API Key" url = "https://api.deepseek.com/chat/completions" body = "{" body = body & """model"": ""deepseek-chat""," body = body & """messages"": [{""role"": ""user"", ""content"": """ & prompt & """}]," body = body & """stream"": false," body = body & """max_tokens"": 2048" body = body & "}" Set http = CreateObject("MSXML2.ServerXMLHTTP") http.Open "POST", url, False http.setTimeouts 10000, 10000, 10000, 60000 http.setRequestHeader "Content-Type", "application/json; charset=utf-8" http.setRequestHeader "Authorization", "Bearer " & apiKey Set stream = CreateObject("ADODB.Stream") stream.Type = 2 stream.Charset = "UTF-8" stream.Open stream.WriteText body stream.Position = 0 stream.Type = 1 http.Send stream.Read stream.Close AskDeepSeek = GetContent(http.responseText) End Function Function GetContent(ByVal response As String) As String Dim keyMark As String Dim startPos As Long Dim endPos As Long Dim content As String keyMark = """content""" startPos = InStr(response, keyMark) If startPos = 0 Then GetContent = "解析失败,原始返回:" & Left(response, 500) Exit Function End If startPos = InStr(startPos + Len(keyMark), response, """") + 1 endPos = InStr(startPos, response, """") content = Mid(response, startPos, endPos - startPos) content = Replace(content, "\n", vbLf) content = Replace(content, "\""", """") content = Replace(content, "\\", "\") GetContent = content End Function Sub AskDeepSeekForExcel() Dim cell As Range Set cell = Selection.Cells(1, 1) If Trim(cell.Value) = "" Then MsgBox "请先选中一个有内容的单元格" Exit Sub End If Dim result As String result = AskDeepSeek("请用中文简洁回答:" & cell.Value) cell.Offset(0, 1).Value = result End Sub代码的核心逻辑不复杂:AskDeepSeek函数把你要问的问题拼成一个JSON格式的请求体,模拟一次POST请求发给DeepSeek官方接口,然后把返回JSON里的“content”字段解析出来。这个解析函数是简化版,如果AI返回内容里本身带有引号或换行,可能出现截取不完整的情况,日常使用够用,后面做批量处理时再考虑用完整的JSON解析库。
三个参数需要重点解释一下。model是模型名,目前DeepSeek的通用对话模型填写deepseek-chat,如果你要用推理模型就填deepseek-reasoner。max_tokens限制最长回复的字符数,一般文档润色2048足够。temperature控制回答的随机性,0到1之间,写代码类的需求建议0.1,写文案建议0.8,在正文的body里可以自行添加。
代码写好之后回到Excel界面,选中一个有文字的单元格,按Alt+F8打开宏列表,找到AskDeepSeekForExcel,点执行,右边单元格就会出现AI回复的内容。这个宏的用户体验其实不够好,更常见的做法是插入一个矩形形状,右键选择“指定宏”,把它和AskDeepSeekForExcel绑定,这样以后点一下按钮就能触发,像用App一样方便。
3.2 Word版:选中文字一键润色和续写
Word里的VBA思路和Excel几乎一样,只是把“取单元格值”换成“取选中的文字”,再把“写进右边单元格”换成“插入到光标位置”。在Word的VBA编辑器里同样插入一个模块,把前面AskDeepSeek和GetContent这两个公共函数复制过去,再新增一个针对Word的入口宏。
Sub AskDeepSeekForWord() Dim prompt As String Dim result As String If Selection.Type = wdSelectionIP Then MsgBox "请先选中要处理的文字" Exit Sub End If prompt = Selection.Text result = AskDeepSeek("请对下面的文字进行润色,保持原意和语气,直接输出润色后的内容:" & prompt) Selection.InsertAfter vbCrLf & "【AI润色结果】" & vbCrLf & result End Sub这个宏的实际体验很直接:你在Word里选中一段写得磕磕绊绊的初稿,运行宏,几秒钟后光标后面就会多出AI润色完成的版本。我建议不要用AI结果覆盖原文,先把润色结果插入在原文下方,对比一遍再手动决定替换哪部分,这样既能保留你自己的表达习惯,又能借助AI优化逻辑。
和Excel一样,你可以在快速访问工具栏添加“宏”按钮,把AskDeepSeekForWord加进去,以后点击一次就能运行。还有一个更进阶的玩法:在工具-宏-宏列表里选编辑,你会发现VBA支持很多Office对象模型操作。比如用CommandBars创建自己的自定义工具栏,甚至给宏分配快捷键Ctrl+Alt+R,直接一键触发,效率和体验都会上一个台阶。
3.3 WPS上运行这些宏的特殊处理
WPS用户不要慌,代码几乎不需要改,主要差在环境配置。如果你的WPS已经装好了VBA组件,打开WPS表格或WPS文字,按Alt+F11一样能进入VBA编辑器,粘贴同样代码就能运行。
WPS的开发工具界面和微软Office略有不同。WPS文字里的宏入口在“开发工具-宏”,WPS表格里也是类似位置。有些版本默认不显示开发工具选项卡,需要打开“文件-选项-自定义功能区”,把“开发工具”勾上。运行宏的时候如果提示“找不到工程或库”,通常是VBA支持库版本与WPS版本不匹配,卸载后重新安装匹配的VBA组件即可。
还有一个很多人忽略的点:WPS的表格和文字是两个独立程序,虽然都支持VBA,但宏是分开放置的。如果你想在WPS表格里调用Word里的宏,要么在两边各自粘贴一遍代码,要么把宏保存为加载宏文件再手动加载。对小白来说,各自粘贴一遍代码反而最省心,反正代码就一个模块。
4. 进阶玩法:从单次请求到批量工作流
4.1 批量处理Excel单元格内容
单次调用只是入门,真正让deepseek在Office里发光的场景是批量处理。假设你手里有一份五百行的商品清单,A列是产品名称,想让AI给每一行生成一句简洁卖点描述,手工复制粘贴得弄一上午,VBA跑起来就是几分钟的事。
Sub BatchAskDeepSeek() Dim rng As Range Dim cell As Range Dim result As String Set rng = Selection For Each cell In rng If Trim(cell.Value) <> "" Then result = AskDeepSeek("请为这个商品写一句吸引人的卖点描述:" & cell.Value) cell.Offset(0, 1).Value = result Application.Wait Now + TimeSerial(0, 0, 1) End If Next MsgBox "批量处理完成" End Sub批量处理有两点必须提醒。第一,不要一次性把几百个请求发过去不加停顿,DeepSeek接口有频率限制,短时间大量调用会返回限流错误,代码里我用Application.Wait让每次请求间隔一秒钟,亲测这个频率比较保险。第二,如果表格数据量大,建议先把数据拷贝到临时工作表再处理,避免在处理过程中误改动原始数据。我还习惯在处理前用Columns("A:A").SpecialCells(xlCellTypeConstants)来限定只遍历有内容的单元格,这样速度更快。
这种“一个函数干一件事”的思路可以反复套用。翻译、摘要、分类、拆分条款,本质上都是把单元格内容拼进prompt,再要求AI按固定格式返回。你甚至可以要求AI返回带序号的内容,再通过VBA把返回文本拆回多列,这样能让AI输出结果直接落到正确表格结构里。
4.2 把DeepSeek接入固定模板报表
批量处理单列数据只是第一步,实战中更头疼的是做固定模板报表。比如你每周都要填一份销售周报,需要把一堆零散数据转成规范表格、写总结、生成下阶段计划,这些完全可以拆成几次AI调用串起来。
我的做法是做一个“模板”工作表,里面预留几个固定单元格作为输入区,比如本月销售额、客户反馈、重点事件,然后在另外一个单元格写一个汇总公式式宏,把这些输入区的值拼成一个包含完整要求的prompt,例如“你是一名业务主管,请根据以下数据写一份周报的第一部分:……”这样AI输出的内容就能直接复制到周报模板里。
把这个思路扩展一下,还能处理很多Office常见痛点。有人问公式图片转Word怎么做,我的建议是先用WPS自带的OCR或者截图工具识别成文字,再交给DeepSeek整理为标准公式或纯文本;有人问PDF转Word后格式全乱,你可以把乱掉的部分复制给AI,让它按目标格式重新生成。AI在这里不是格式转换器,而是一个能理解内容的中间整理层,效果往往比直接转换好得多。
如果你的工作流有图形化配置工具,比如Coze这类工作流平台,也可以把DeepSeek接到一个自动流程里,生成Markdown格式的文本,再通过“另存为”或粘贴方式导入Word。VBA宏和云端工作流不冲突,你完全可以把部分任务放在Office本地宏里做,把更大一些的文档工程放到工作流平台处理。
4.3 更高级:本地部署后Office内网调用
如果你在公司或者个人环境里特别在意数据隐私,不想把任何文本内容发到云端API,那本地部署DeepSeek模型就是一个现实选项。用Ollama这类本地模型管理工具,可以在自己电脑上把模型跑起来,然后暴露一个兼容OpenAI格式的本地接口,Office里的VBA宏只需要把API地址从公网改成localhost即可。
实际改动非常小,接口地址从https://api.deepseek.com/chat/completions换成http://localhost:11434/v1/chat/completions,Key可以随便填一个占位符,模型名换成你自己拉取下来的本地模型名。其余请求逻辑一点不用改。我专门试过连接本地模型,返回内容和官方DeepSeek格式基本一致,GetContent函数能正常解析。
但我要泼一盆冷水:本地部署的门槛在硬件,不在软件。像DeepSeek这样的大模型,家用电脑跑精简量化版本也需要至少16G内存,跑中等规模的模型需要一块显存8G以上的显卡,否则生成速度慢得无法接受。所以本地部署更适合对数据安全要求高、又有一定硬件条件的用户,普通小白还是优先用官方API,便宜且稳定,体验相差不大。
5. 常见问题与排查技巧实录
5.1 一张表解决大部分报错
在帮朋友配置的过程中,我几乎见过了所有新手能遇到的报错,下面的表可以直接当排查手册用:
| 现象 | 可能原因 | 解决办法 |
|---|---|---|
| 宏列表里找不到宏 | 代码没保存、模块插错位置 | 检查VBA工程资源管理器,确认模块在当前文档下 |
| 运行宏提示“宏被禁用” | Office安全级别限制 | 把文件放入受信任位置,或临时调整宏安全设置 |
| 返回401 Unauthorized | API Key错误或已删除 | 重新复制Key,注意不要带前后空格 |
| 返回402或余额不足 | 账号余额为0 | 登录开放平台充值,或使用赠送额度 |
| 返回400 Bad Request | 请求体格式有问题或中文编码异常 | 检查VBA代码中的body拼写,确认ADODB.Stream的UTF-8编码流程没被删掉 |
| 请求超时 | 网络波动或超时设置过短 | 调大setTimeouts参数,检查网络是否稳定 |
| 返回内容乱码 | 响应编码解析错误 | 确保请求头包含charset=utf-8,优先使用UTF-8字节流发送 |
| WPS找不到VBA组件 | 未安装匹配的VBA支持库 | 从WPS官方渠道下载并安装对应位数组件 |
| 全角引号出现在AI回复里 | 输入法自动转换 | 在VBA字符串中使用英文半角引号;把输入法临时切到英文模式 |
| Excel无法复制粘贴 | 剪贴板被其他程序占用,或加载项冲突 | 关闭外部剪贴板工具,保存文档后重启Excel |
| Word关闭时卡顿 | 加载项过多,包括某些AI插件 | 文件-选项-加载项中逐个禁用排查,留下需要的即可 |
| MathType在WPS里不见了 | 加载项未启用 | 开发工具-加载项里勾选MathType对应的选项 |
你看,很多看起来和deepseek无关的Office毛病,本质上都是加载项或环境配置问题,和本文的VBA宏运行逻辑是同一套思路。装任何插件之前先想想它改了什么,遇到异常时优先怀疑加载项而不是重装软件。
5.2 我踩过的坑和心得
技术上能跑通只是第一步,真正用起来还有几个习惯层面的坑,我得单独拿出来说。
最严重的一次是我把API Key直接写在一个共享Excel宏里,然后发给同事使用。结果同事把文件转发给了别人,Key被几个人拿去调用,一天就产生了几十块钱费用。从那以后我养成了两个习惯:一是代码里的apiKey尽量从某个独立配置文件或Excel单元格读取,而不是硬编码在VBA里;二是绝对不在共享文档里直接写Key,必须写也用占位符,实际运行时再填。
第二个坑是限流。我第一次做批量翻译时,没加等待时间直接循环两百行,跑到第六十几行就开始报错,DeepSeek接口返回限流提示。后来我把每次请求间隔拉长到1到2秒,又把大任务拆成小批次分批跑,就再也没触发过。现在处理大规模数据时,我还会把每批100行做成一个独立宏,跑完一批歇一下,出错也知道从哪里续跑。
第三个坑是AI返回内容截断。DeepSeek的deepseek-chat模型在长文本生成时偶尔会在一个句子中间停下,这时GetContent函数正常返回但内容不完整。我现在的处理方式是在prompt里明确要求“控制在两百字以内”,并且加一句“如果输出被截断,请补全完整内容后再返回”,这样截断概率会明显下降。涉及公式或复杂文本时,建议要求AI标记前后缀,方便VBA解析。
还有一点经验之谈:VBA处理AI返回的换行符时,常见的是\n转义符,但我遇到过一次返回里带着\r\n的情况,解析后Word里出现大量空行。后来我在GetContent里同时把\r\n统一替换成vbCrLf,把多余的连续换行压缩,才算彻底解决。细节问题只有在真实场景里才会暴露,所以初期不要追求代码一步到位,跑起来再调,比空想全面靠谱得多。
我个人现在最喜欢的一个应用不是那些炫酷功能,而是每天早上用Word宏让deepseek帮我把前一天的项目记录润色成三句话的工作日志。很轻量,但正是这种“啃下来不费劲、坚持用很值”的小需求,让AI真正融进了日常办公。你也别急着追求大而全的AI办公套件,先从选一段文字润色、给一列商品写文案这种小目标开始,把一个宏跑顺,再逐步扩展成你的专属AI工具集。