本文将介绍如何通过宏(Macro)的方式在Microsoft Word中接入DeepSeek,实现自动化的文本处理和分析。
1. 准备工作
在开始之前,确保你已经具备以下条件:
- Microsoft Word:建议使用2016及以上版本。
- DeepSeek API:你需要拥有DeepSeek的API密钥,并了解其基本使用方法。(因当前deepseek已经停止充值,可以试着从豆包或者阿里去接入deepseek)
- VBA(Visual Basic for Applications):Word中的宏是通过VBA编写的,因此你需要对VBA有一定的了解。
2. 获取DeepSeek API密钥
首先,访问DeepSeek的官方网站并注册一个账号。注册完成后,你可以在个人中心获取API密钥。这个密钥将用于在Word中调用DeepSeek的服务。
我之前没有注册,就直接从豆包拿来一个。
豆包模型广场:https://console.volcengine.com/ark/region:ark+cn-beijing/model?projectName=default&vendor=Bytedance&view=LIST_VIEW
点击模型详情,进入性情页面,复制模型id,后面要使用。
获取API密钥
这一步准备工作我们主要需要获取三个地址
api地址:https://ark.cn-beijing.volces.com/api/v3/chat/completions
api密钥 *
模型id:deepseek-v3-241226
3. 在Word中启用开发者选项
- 打开Microsoft Word。
- 点击“文件”菜单,选择“选项”。
- 在“Word选项”窗口中,选择“自定义功能区”,在右侧的“主选项卡”下,勾选“开发者”选项,然后点击“确定”
- 在“Word选项”窗口中,选择信任中心,点进信任中心设置
5.选择宏设置,勾选启用所有宏,信任宏访问。
这一步的作用主要是菜单里面启用宏编程。操作完完成后,你就可以在菜单栏看到开发者工具。
4. 编写VBA宏
- 在Word中,按下
Alt + F11
打开VBA编辑器。或者点击开发者工具,选择第一个Visual Basic
- 在左侧的“项目资源管理器”中,点击插入模块,然后在右侧的编辑区域输入以下代码
Function CallDeepSeekAPI(api_key As String, inputText As String) As String
Dim API As String
Dim SendTxt As String
Dim Http As Object
Dim status_code As Integer
Dim response As String
API = "https://ark.cn-beijing.volces.com/api/v3/chat/completions"
SendTxt = "{""model"": ""deepseek-v3-241226"", ""messages"": [{""role"":""system"", ""content"":""You are a Word assistant""}, {""role"":""user"", ""content"":""" & inputText & """}], ""stream"": false}"
' 不想用R1模型,想用V3模型,就把上面的model的deepseek-reasoner换成deepseek-chat
Set Http = CreateObject("MSXML2.XMLHTTP")
With Http
.Open "POST", API, False
.setRequestHeader "Content-Type", "application/json"
.setRequestHeader "Authorization", "Bearer " & api_key
.send SendTxt
status_code = .Status
response = .responseText
End With
' 弹出窗口显示 API 响应(调试用)
' MsgBox "API Response: " & response, vbInformation, "Debug Info"
If status_code = 200 Then
CallDeepSeekAPI = response
Else
CallDeepSeekAPI = "Error: " & status_code & " - " & response
End If
Set Http = Nothing
End Function
Sub DeepSeekV3()
Dim api_key As String
Dim inputText As String
Dim response As String
Dim regex As Object
Dim matches As Object
Dim originalSelection As Range
' API Key
api_key = "替换你的密钥"
If api_key = "" Then
MsgBox "Please enter the API key.", vbExclamation
Exit Sub
End If
' 检查是否有选中文本
If Selection.Type <> wdSelectionNormal Then
MsgBox "Please select text.", vbExclamation
Exit Sub
End 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, """", "\""") ' 转义双引号
' 发送 API 请求
response = CallDeepSeekAPI(api_key, inputText)
' 处理 API 响应
If Left(response, 5) <> "Error" Then
' 解析 JSON
Set regex = CreateObject("VBScript.RegExp")
With regex
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = """content"":""(.*?)""" ' 匹配 JSON 的 "content" 字段
End With
Set matches = regex.Execute(response)
If matches.Count > 0 Then
' 提取 API 响应的文本内容
response = matches(0).SubMatches(0)
' 处理转义字符
response = Replace(response, "\n", vbCrLf)
response = Replace(response, "\\", "\") ' 处理 JSON 里的反斜杠
response = Replace(response, "&", "") ' 过滤 `&`,防止意外符号
' 让光标移动到文档末尾,防止覆盖已有内容
Selection.Collapse Direction:=wdCollapseEnd
Selection.TypeParagraph
Selection.TypeText Text:=response
' 将光标移回原来选中文本的末尾
originalSelection.Select
Else
MsgBox "Failed to parse API response.", vbExclamation
End If
Else
MsgBox response, vbCritical
End If
End Sub
打开word选项,选择自定义功能区,右下角,新建组,新建完成后,左侧下拉选择宏,然后选择你刚才新建的宏进行添加。
点击确定后,然后回到word编辑页面,输入你的要求,选中后,点击菜单栏中你刚才新建的宏,AI就可以帮助你开始写了