DeepSeek 接入 Word 完整教程
一、前期准备
1.1 注册并获取 API 密钥
- 访问 DeepSeek 平台:
- 打开浏览器,访问 DeepSeek 官方网站(或您使用的相应平台)。
- 注册并登录您的账户。
- 创建 API 密钥:
- 在用户控制面板中,找到“API Keys”或“API 管理”选项。
- 点击“创建 API Key”按钮,填写应用名称(例如 “Word 文案助手”)。
- 系统将生成类似
sk-xxxxxxxxxxxxxxxxxxxx格式的密钥,请将它复制并妥善保存,后续在 VBA 代码中需要使用此密钥。
二、配置 Word 环境
2.1 启用开发工具选项卡
- 在 Word 中点击【文件】>【选项】。
- 在“Word 选项”对话框中,选择【自定义功能区】。
- 在右侧列表中勾选【开发工具】,然后点击【确定】。
这样在功能区上就会显示“开发工具”选项卡。
2.2 启用宏安全设置
- 在“开发工具”选项卡内,点击【宏安全性】或【信任中心】。
- 进入“信任中心设置”,在【宏设置】中选择“启用所有宏”并可勾选“信任对 VBA 工程对象模型的访问”。
注意: 启用宏可能有安全风险,请在受信任的环境下运行。
三、编写 VBA 宏代码
3.1 打开 VBA 编辑器并插入模块
- 在“开发工具”选项卡中点击【Visual Basic】按钮(或使用快捷键 Alt+F11)。
- 在 VBA 编辑器中,右击当前工程(如 “Normal” 或当前文档名称),选择【插入】>【模块】。
建议将此模块命名为 “DeepSeekModule”。
3.2 粘贴下面的完整代码
代码包含两个通用函数用于调用 DeepSeek API 的不同模型(如 deepseek-chat、deepseek-reasoner),以及两个宏分别处理用户选中文本并将结果插入文档。代码中每一部分均有详细注释说明各命令含义。
Option Explicit'==========================
'【公共 API 调用函数】
'==========================
' 此函数用于向 DeepSeek API 发送请求,参数:
' api_key —— 您的 API 密钥
' inputText —— 需要处理的文本(用户选中文本)
' modelName —— 调用的模型名称,如 "deepseek-chat" 或 "deepseek-reasoner"
' 返回 API 的响应文本(JSON 格式),若出错则返回错误信息。
Private Function CallDeepSeekAPI(api_key As String, inputText As String, modelName As String) As StringDim API As StringDim SendTxt As StringDim Http As ObjectDim status_code As IntegerDim response As String' API 请求地址API = "https://api.deepseek.com/chat/completions"' 构建请求体(JSON 格式)' 注:系统角色提示设定为“你是 Word 文案助手”SendTxt = "{""model"": """ & modelName & """, " & _"""messages"": [{" & _"""role"":""system"", ""content"":""你是 Word 文案助手""}," & _" {""role"":""user"", ""content"":""" & inputText & """}" & _"], ""stream"": false}"' 使用 MSXML2.XMLHTTP 对象发送 HTTP 请求On Error GoTo ErrHandlerSet Http = CreateObject("MSXML2.XMLHTTP")With Http.Open "POST", API, False.setRequestHeader "Content-Type", "application/json".setRequestHeader "Authorization", "Bearer " & api_key.Send SendTxtstatus_code = .Statusresponse = .responseTextEnd With' 根据响应状态返回结果或错误信息If status_code = 200 ThenCallDeepSeekAPI = responseElseCallDeepSeekAPI = "Error: " & status_code & " - " & responseEnd IfExitPoint:Set Http = NothingExit FunctionErrHandler:CallDeepSeekAPI = "Error: " & Err.Number & " - " & Err.DescriptionResume ExitPoint
End Function'===============================
'【封装具体模型的调用函数】
'===============================
' 调用 deepseek-chat 模型
Function CallDeepSeekChatAPI(api_key As String, inputText As String) As StringCallDeepSeekChatAPI = CallDeepSeekAPI(api_key, inputText, "deepseek-chat")
End Function' 调用 deepseek-reasoner 模型
Function CallDeepSeekReasonerAPI(api_key As String, inputText As String) As StringCallDeepSeekReasonerAPI = CallDeepSeekAPI(api_key, inputText, "deepseek-reasoner")
End Function'=====================================
'【主宏:DeepSeek 使用 deepseek-chat 模型】
'=====================================
Sub DeepSeekChat()Dim api_key As StringDim inputText As StringDim response As StringDim regex As ObjectDim matches As ObjectDim originalSelection As Range' ============================'【设置 API 密钥】' ============================' 请替换下面的 "在此处替换为您的 API Key" 为您获取的 API 密钥api_key = "在此处替换为您的 API Key"' 检查 API 密钥及是否选中有效文本If api_key = "" ThenMsgBox "Please enter the API key.", vbCriticalExit SubElseIf Selection.Type <> wdSelectionNormal ThenMsgBox "请选择文本.", vbExclamationExit SubEnd If' ============================'【保存选中区域】' ============================' 保存当前选区,以便后续恢复光标位置Set originalSelection = Selection.Range.Duplicate' ============================'【获取并处理选中文本】' ============================inputText = Selection.Text' 对特殊字符进行转义处理inputText = Replace(inputText, "\", "\\")inputText = Replace(inputText, vbCrLf, "")inputText = Replace(inputText, vbCr, "")inputText = Replace(inputText, vbLf, "")inputText = Replace(inputText, Chr(34), "\""")inputText = Replace(inputText, Chr(39), "\'")' ============================'【调用 API 接口】' ============================response = CallDeepSeekChatAPI(api_key, inputText)' 检查返回信息,如果返回 “Error” 开头,则说明调用失败If Left(response, 5) = "Error" ThenMsgBox response, vbCriticalExit SubEnd If' ============================'【解析 API 返回的 JSON 数据】' ============================' 使用正则表达式提取 JSON 中 "content" 字段的值Set regex = CreateObject("VBScript.RegExp")With regex.Global = True.MultiLine = True.IgnoreCase = False.Pattern = """content"":""(.*?)"""End WithSet matches = regex.Execute(response)If matches.Count > 0 Thenresponse = matches(0).SubMatches(0)' 将换行符转换成 Word 支持的换行标识response = Replace(response, "\n", vbCrLf)' 若有特殊符号,根据需要去除,例如 * 或 #response = Replace(response, "*", "")response = Replace(response, "#", "")' ============================'【将返回内容插入文档】' ============================' 将光标移动到当前选区末尾,插入新段落并输出生成文本Selection.Collapse Direction:=wdCollapseEndSelection.TypeParagraphSelection.TypeText Text:=response' 恢复原始选区(可选)originalSelection.SelectElseMsgBox "Failed to parse API response.", vbExclamationEnd If
End Sub'=====================================
'【主宏:DeepSeek 使用 deepseek-reasoner 模型】
'=====================================
Sub DeepSeekReasoner()Dim api_key As StringDim inputText As StringDim response As StringDim regex As ObjectDim matches As ObjectDim originalSelection As Range' ============================'【设置 API 密钥】' ============================' 请替换下面的 "在此处替换为您的 API Key" 为您的 API 密钥api_key = "在此处替换为您的 API Key"' 检查 API 密钥及是否选中有效文本If api_key = "" ThenMsgBox "Please enter the API key.", vbCriticalExit SubElseIf Selection.Type <> wdSelectionNormal ThenMsgBox "请选择文本.", vbExclamationExit SubEnd If' ============================'【保存选中区域】' ============================Set originalSelection = Selection.Range.Duplicate' ============================'【获取并处理选中文本】' ============================inputText = Selection.TextinputText = Replace(inputText, "\", "\\")inputText = Replace(inputText, vbCrLf, "")inputText = Replace(inputText, vbCr, "")inputText = Replace(inputText, vbLf, "")inputText = Replace(inputText, Chr(34), "\""")inputText = Replace(inputText, Chr(39), "\'")' ============================'【调用 API 接口】' ============================response = CallDeepSeekReasonerAPI(api_key, inputText)' 检查返回信息,如果返回 “Error” 开头,则说明调用失败If Left(response, 5) = "Error" ThenMsgBox response, vbCriticalExit SubEnd If' ============================'【解析 API 返回的 JSON 数据】' ============================Set regex = CreateObject("VBScript.RegExp")With regex.Global = True.MultiLine = True.IgnoreCase = False.Pattern = """content"":""(.*?)"""End WithSet matches = regex.Execute(response)If matches.Count > 0 Thenresponse = matches(0).SubMatches(0)response = Replace(response, "\n", vbCrLf)response = Replace(response, "*", "")response = Replace(response, "#", "")' ============================'【将返回内容插入文档】' ============================Selection.Collapse Direction:=wdCollapseEndSelection.TypeParagraphSelection.TypeText Text:=response' 恢复原选区(可选)originalSelection.SelectElseMsgBox "Failed to parse API response.", vbExclamationEnd If
End Sub
3.3 保存代码
- 完成粘贴后,保存 VBA 代码,关闭 VBA 编辑器。
四、将宏添加到 Word 自定义功能区(按钮)
为了方便使用,我们可以将写好的宏添加到 Word 的功能区中,具体步骤如下:
- 打开 Word 的“选项”界面:
点击【文件】>【选项】。 - 自定义功能区:
选择【自定义功能区】,在右侧列表中新建一个选项卡(例如命名为 “DeepSeek 助手”)或在“开发工具”中添加一个新分组(例如 “DeepSeek 工具”)。 - 添加宏命令:
在左侧选择“宏”类别,找到刚才创建的宏(如DeepSeekChat和DeepSeekReasoner),将其添加到新建的分组中。你可对按钮名称进行修改,并设置图标以便于识别。 - 点击“确定”:
自定义完成后,在功能区中即可看到新添加的按钮,点击即可快速触发相应的宏命令。
五、使用说明与调试
5.1 测试调用 DeepSeek
- 准备测试文本:
- 在 Word 文档中输入一段文本,例如:“请优化下面这段介绍语…”或其他待处理文本。
- 用鼠标选中这段文本。
- 运行宏命令:
- 可以通过“开发工具”选项卡中点击“宏”按钮,选择
DeepSeekChat(或DeepSeekReasoner)后点击“运行”。 - 或者直接点击自定义功能区中的按钮执行。
- 可以通过“开发工具”选项卡中点击“宏”按钮,选择
- 查看输出结果:
- 程序会调用 DeepSeek API,对选中文本进行处理(如改写、润色或续写)。
- 处理结果会以新段落的形式插入到选中文本之后,同时原选区可选性恢复。
5.2 错误排查
- API Key 检查:
确保在代码中已替换为您真实的 API 密钥,否则程序会弹出提示要求输入 API Key。 - 网络连接:
确保计算机可以正常访问https://api.deepseek.com,防火墙或代理设置不影响 HTTP 请求。 - 宏安全设置:
若程序提示“请选择文本”或不能运行宏,请检查当前是否有有效文本选中,以及宏安全设置是否正确配置。
5.3 进阶扩展建议
- 多模型选择:
根据需求,可以增加界面选择不同模型(如“文案助手”与“推理分析”)对应的宏,分别调用CallDeepSeekChatAPI或CallDeepSeekReasonerAPI。 - JSON 解析优化:
对于复杂返回数据,建议引入 VBA JSON 库(例如 VBA-JSON),提高解析正确率。 - 日志记录:
添加日志记录功能(例如写入文本文件),便于调试和后续维护。
总结
本文详细介绍了如何将 DeepSeek 接入到 Microsoft Word 中的完整流程。通过以下步骤实现:
- API 密钥获取和环境配置:注册 DeepSeek 并获取 API Key;在 Word 中启用开发工具和宏设置。
- VBA 代码编写:将深度处理 API 封装为公共函数,并分别编写调用 deepseek-chat 和 deepseek-reasoner 模型的宏。代码中详细注释了每一步的作用。
- 自定义功能区集成:将编写好的宏添加到 Word 的自定义选项卡中,通过按钮轻松运行。
- 测试与调试:选中待处理文本,运行宏,查看处理结果,针对错误进行排查。
通过此完整教程,您可以轻松将 DeepSeek 的智能功能集成到 Word 文档中,实现高效自动化写作、润色、翻译等功能。如果后续有更多需求或需要改进,您可以基于该基础代码进行进一步扩展和优化。
相关文章:
DeepSeek 接入 Word 完整教程
一、前期准备 1.1 注册并获取 API 密钥 访问 DeepSeek 平台: 打开浏览器,访问 DeepSeek 官方网站(或您使用的相应平台)。注册并登录您的账户。 创建 API 密钥: 在用户控制面板中,找到“API Keys”或“API…...
通义灵码助力Neo4J开发:快速上手与智能编码技巧
在 Web 应用开发中,Neo4J 作为一种图数据库,用于存储节点及节点间的关系。当图结构复杂化时,关系型数据库的查找效率会显著降低,甚至无法有效查找,这时 Neo4J 的优势便凸显出来。然而,由于其独特的应用场景…...
高性能文件上传服务
高性能文件上传服务 —— 您业务升级的不二选择 在当今互联网数据量激增、文件体积日益庞大的背景下,高效、稳定的文件上传方案显得尤为重要。我们的文件分块上传服务端采用业界领先的 Rust HTTP 框架 Hyperlane 开发,凭借其轻量级、低延时和高并发的特…...
p2p的发展
PCDN(P2P内容分发网络)行业目前处于快速发展阶段,面临机遇与挑战并存的局面。 一、发展机遇 技术融合推动 边缘计算与5G普及:5G的高带宽、低延迟特性与边缘计算技术结合,显著提升PCDN性能,降低延迟&#x…...
Java Lambda 表达式详解:发展史、语法、使用场景及代码示例
Java Lambda 表达式详解:发展史、语法、使用场景及代码示例 1. Lambda 表达式的发展史 背景与动机 JDK 7 前:Java的匿名内部类虽强大,但代码冗余(如事件监听器、集合遍历)。JDK 8(2014)&#…...
【从0到1学Elasticsearch】Elasticsearch从入门到精通(下)
我们在【从0到1学Elasticsearch】Elasticsearch从入门到精通(上)这边文章详细讲解了如何创建索引库和文档及javaAPI操作,但是在实战当中,我们还需要根据一些特殊字段对文档进行查找搜索,仅仅靠id查找文档是显然不够的。…...
Python实现贪吃蛇二
上篇文章Python实现贪吃蛇一,实现了一个贪吃蛇的基础版本,但存在一些不足,也缺乏一些乐趣。本篇文章将对其进行一些改进,主要修改/实现以下几点: 1、解决食物随机生成的位置与蛇身重合问题 2、蛇身移动加速/减速功能 3…...
使用pybind11开发c++扩展模块输出到控制台的中文信息显示乱码的问题
使用pybind11开发供Python项目使用的C++扩展模块时,如果在扩展模块的C++代码中向控制台输出的信息中包含中文,python程序的控制台很容易出现乱码。以如下C++扩展框架代码为例(这是对上一篇文章简明使用pybind11开发pythonc+扩展模块教程-CSDN博客中的C++扩展框架代码进行少量…...
基于51单片机的正负5V数字电压表( proteus仿真+程序+设计报告+讲解视频)
基于51单片机的正负5V数字电压表( proteus仿真程序设计报告讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0101 1. 主要功能: 设计一个基于51单片机数字电压表 1、能够…...
Java雪花算法
以下是用Java实现的雪花算法代码示例,包含详细注释和异常处理: 代码下面有解析 public class SnowflakeIdGenerator {// 起始时间戳(2020-01-01 00:00:00)private static final long START_TIMESTAMP 1577836800000L;// 各部分…...
前端大屏可视化项目 局部全屏(指定盒子全屏)
需求是这样的,我用的项目是vue admin 项目 现在需要在做大屏项目 不希望显示除了大屏的其他东西 于是想了这个办法 至于大屏适配问题 请看我文章 底部的代码直接复制就可以运行 vue2 px转rem 大屏适配方案 postcss-pxtorem-CSDN博客 <template><div …...
Android studio消息同步机制:消息本地存储,服务器交互减压
文章目录 后端(Flask)代码前端(Android Studio Java)代码同步机制1. 放在 Activity 中2. 放在 Service 中3. 放在 DataManager 类中 放在Service中的具体实现1. 后台执行2. 独立于活动3. 系统管理4. 绑定服务5. 进程间通信&#x…...
P8667 [蓝桥杯 2018 省 B] 递增三元组(摘自洛谷)
给定三个整数数组 A[A1,A2,⋯,AN],B[B1,B2,⋯,BN],C[C1,C2,⋯,CN]。 请你统计有多少个三元组 (i,j,k) 满足: 1≤i,j,k≤NAi<Bj<Ck 输入格式 第一行包含一个整数 N。 第二行包含 N 个整数 A1,A2,⋯,AN…...
【Kafka基础】监控与维护:动态配置管理,灵活调整集群行为
1 基础配置操作 1.1 修改主题保留时间 /export/home/kafka_zk/kafka_2.13-2.7.1/bin/kafka-configs.sh --alter \--bootstrap-server 192.168.10.33:9092 \--entity-type topics \--entity-name yourtopic \--add-config retention.ms86400000 参数说明: retention…...
01_JDBC
文章目录 一、概述1.1、什么是JDBC1.2、JDBC原理 二、JDBC入门2.1、准备工作2.1.1、建库建表2.1.2、新建项目 2.2、建立连接2.2.1、准备四大参数2.2.2、加载驱动2.2.3、准备SQL语句2.2.4、建立连接2.2.5、常见问题 2.3、获取发送SQL的对象2.4、执行SQL语句2.5、处理结果2.6、释…...
STM32 HAL库 HC - SR04 超声波测距模块驱动实现
一、引言 在现代嵌入式系统开发中,传感器技术起着至关重要的作用。超声波测距模块作为一种常用的距离测量传感器,因其成本低、精度较高、使用方便等优点,被广泛应用于机器人避障、液位检测、工业自动化等领域。HC - SR04 超声波测距模块是一…...
Spring Boot 热部署详解,包含详细的配置项说明
Spring Boot 热部署详解 1. 热部署简介 热部署(Hot Deployment)允许在应用运行时修改代码或配置文件,无需重启应用即可使更改生效。Spring Boot 通过 spring-boot-devtools 模块实现这一功能,其核心依赖于 LiveReload 技术和自动…...
剑指Offer(数据结构与算法面试题精讲)C++版——day12
剑指Offer(数据结构与算法面试题精讲)C版——day12 题目一:小行星碰撞题目二:每日温度题目三:直方图最大矩形面积附录:源码gitee仓库 题目一:小行星碰撞 题目:输入一个表示小行星的数…...
贪心算法(18)(java)距离相等的条形码
在一个仓库里,有一排条形码,其中第 i 个条形码为 barcodes[i]。 请你重新排列这些条形码,使其中任意两个相邻的条形码不能相等。 你可以返回任何满足该要求的答案,此题保证存在答案。 示例 1: 输入:barco…...
Docker学习笔记-docker安装、删除
一、在centOS 7中docker的默认安装目录 # Docker 主配置文件目录 ls /etc/docker# Docker 数据目录(镜像、容器、卷等) ls /var/lib/docker# Docker 可执行文件路径 which docker # 输出类似 /usr/bin/docker 二、docker文件目录说明 目录/文件用途/…...
【Python 开源】你的 Windows 关机助手——PyQt5 版定时关机工具
🖥️ 你的 Windows 关机助手——PyQt5 版定时关机工具 相关资源文件已经打包成EXE文件,可双击直接运行程序,且文章末尾已附上相关源码,以供大家学习交流,博主主页还有更多Python相关程序案例,秉着开源精神的…...
STM32 HAL库 ADC+TIM+DMA 3路 1S采样一次电压
一、引言 在很多嵌入式系统应用中,需要对多路模拟信号进行周期性采样,例如在工业控制、环境监测等领域。STM32F407 是一款高性能的微控制器,其丰富的外设资源可以方便地实现这样的功能。通过结合 ADC(模拟 - 数字转换器ÿ…...
汉诺塔问题——用贪心算法解决
目录 一:起源 二:问题描述 三:规律 三:解决方案 递归算法 四:代码实现 复杂度分析 一:起源 汉诺塔(Tower of Hanoi)问题起源于一个印度的古老传说。在世界中心贝拿勒斯&#…...
【Python爬虫】简单介绍
目录 一、基本概念 1.1 什么是爬虫 1.2 Python为什么适合爬虫 1.3 Python爬虫应用领域 (1)数据采集与分析 市场调研 学术研究 (2)内容聚合与推荐 新闻聚合 视频内容聚合 (3)金融领域 股票数据获…...
使用MCP服务通过自然语言操作数据库(vscode+cline版本)
使用MCP服务操纵数据库(vscodecline版本) 本文主要介绍,在vscode中使用cline插件调用deepseek模型,通过MCP服务器 使用自然语言去操作指定数据库。本文使用的是以己经创建号的珠海航展数据库。 理解MCP服务: MCP(Model Context…...
Vue 3 + TypeScript 实现一个多语言国际化组件(支持语言切换与内容加载)
文章目录 一、项目背景与功能概览二、项目技术架构与依赖安装2.1 技术栈2.2 安装依赖 三、国际化组件实现3.1 创建 i18n 实例3.2 配置 i18n 到 Vue 应用3.3 在组件中使用国际化内容3.4 支持语言切换 四、支持类型安全4.1 添加类型支持4.2 自动加载语言文件 一、项目背景与功能概…...
PhalApi 2.x:让PHP接口开发从“简单”到“极简”的开源框架
—— 专为高效开发而生,助你轻松构建高可用API接口 一、为什么选择PhalApi 2.x? 1.轻量高效,性能卓越 PhalApi 2.x 是一款专为接口开发设计的轻量级PHP框架,其核心代码精简但功能强大。根据开发者实测,在2核2G服务器…...
库magnet使用指南
Magnet 多线程控制库使用指南 目录 库功能概述环境配置核心类与接口基础使用示例代码生成工具高级功能与改进建议完整示例代码常见问题解答 https://blink.csdn.net/details/1872803?spm1001.2014.3001.5501 1. 库功能概述 Magnet 库提供以下核心功能: 多线程…...
Oracle数据库数据编程SQL<9.3 数据库逻辑备份和迁移Data Pump (EXPDP/IMPDP) 导出、导入补充>
Oracle Data Pump 是 Oracle 10g 引入的高效数据迁移工具,相比传统的 EXP/IMP 工具,它提供了更强大的功能和显著的性能提升。以下是对 EXPDP 和 IMPDP 工具的全面讲解。 目录 一、高级功能扩展 1. 数据过滤与转换 2. 加密与安全 二、性能调优进阶 1. 并行处理优化 2. …...
Java 企业级应用:SOA 与微服务的对比与选择
企业级应用开发中,架构设计是决定系统可扩展性、可维护性和性能的关键因素。SOA(面向服务的架构)和微服务架构是两种主流的架构模式,它们各自有着独特的和设计理念适用场景。本文将深入探讨 SOA 和微服务架构的对比,并…...
