VBA脚本将DeepSeek嵌入Word中教程

一、获取API-Key

目前我们可以直接只用官网的API来实现,申请这一步是关键

也可以直接访问官网的API平台:https://platform.deepseek.com/ ,没注册的注册完登录一下,我们点击到左侧菜单的"APIKeys"按钮,然后点击右侧的"创建API Key"

在弹出的对话框中备注一下,以防忘记,点击创建,这样我们就获得了一个API Key了。记得先将密钥复制存放一下。一旦关闭就无法复制,只能删了重新创建。

二:WORD开启宏命令

要将DeepSeek集成到Word中必须先使用到"宏",但是Office默认是禁用宏的,需先开启一下宏命令的功能。

  1. 启动Word应用程序。

  2. 在Word界面的顶部,找到并点击"文件"菜单。

  3. 在下拉菜单中,选择"选项"按钮以进入设置界面。

  4. 在弹出的"Word选项"窗口中,找到并点击左侧的"信任中心"设置。

  5. 在"信任中心"设置中,点击"信任中心设置..."按钮。

  6. 在"信任中心"对话框中,切换到"宏设置"选项卡。

  7. 在这里,您可以选择以下选项之一:

    • "禁用所有宏,带通知":所有宏都将被禁用,但会通知您宏的存在。

    • "禁用所有宏,不通知":所有宏都将被禁用,且不会通知您。

    • "启用所有宏":所有宏都将被允许运行,但请注意,这可能会带来安全风险。

    • "禁用所有宏,除了签名的宏":所有未签名的宏都将被禁用,但签名的宏将被允许运行。

  8. 根据您的需求选择合适的宏设置,然后点击"确定"保存设置。

  9. 再次点击"确定"关闭"信任中心"对话框,然后关闭"Word选项"窗口。

完成以上步骤后,您就可以在Word中使用宏功能了。如果您需要启用特定的宏,确保选择了允许宏运行的设置,并确保宏是来自可信的来源。启用宏后,您可以按照DeepSeek的集成指南,继续进行DeepSeek与Word的集成操作。

三、启动开发工具

一般Word因为禁用了"宏命令",对应的"开发工具"菜单没开启,我们需要开启一下。按如下操作启动 "开发工具"菜单:"文件"------"选项"------"自定义功能",勾选启动"开发工具"菜单

四、创建VB宏命令

点击"开发工具"下的Visual Basic编辑器

进入后点击菜单中的"插入"-"模块",命名为"DeepSeek"

如下代码复制粘贴到模块中。

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://api.deepseek.com/chat/completions"

SendTxt = "{""model"": ""deepseek-reasoner"", ""messages"": [{""role"":""system"", ""content"":""你是一个乐于助人的AI助手,请根据用户的问题给出详细的解答。""}, {""role"":""user"", ""content"":""" & inputText & """}], ""stream"": false}"

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 DeepSeekR1()

Dim api_key As String

Dim inputText As String

Dim response As String

Dim regex As Object

Dim reasoningRegex As Object

Dim contentRegex As Object

Dim matches As Object

Dim reasoningMatches As Object

Dim originalSelection As Object

Dim reasoningContent As String

Dim finalContent As String

api_key = "替换为你的api key"

If api_key = "" Then

MsgBox "Please enter the API key."

Exit Sub

ElseIf Selection.Type <> wdSelectionNormal Then

MsgBox "Please select text."

Exit Sub

End If

' 保存原始选中的文本

Set originalSelection = Selection.Range.Duplicate

inputText = Replace(Replace(Replace(Replace(Replace(Selection.text, "\", "\\"), vbCrLf, ""), vbCr, ""), vbLf, ""), Chr(34), "\""")

response = CallDeepSeekAPI(api_key, inputText)

If Left(response, 5) <> "Error" Then

' 创建正则表达式对象来分别匹配推理内容和最终回答

Set reasoningRegex = CreateObject("VBScript.RegExp")

With reasoningRegex

.Global = True

.MultiLine = True

.IgnoreCase = False

.Pattern = """reasoning_content"":""(.*?)"""

End With

Set contentRegex = CreateObject("VBScript.RegExp")

With contentRegex

.Global = True

.MultiLine = True

.IgnoreCase = False

.Pattern = """content"":""(.*?)"""

End With

' 提取推理内容

Set reasoningMatches = reasoningRegex.Execute(response)

If reasoningMatches.Count > 0 Then

reasoningContent = reasoningMatches(0).SubMatches(0)

reasoningContent = Replace(reasoningContent, "\n\n", vbNewLine)

reasoningContent = Replace(reasoningContent, "\n", vbNewLine)

reasoningContent = Replace(Replace(reasoningContent, """", Chr(34)), """", Chr(34))

End If

' 提取最终回答

Set matches = contentRegex.Execute(response)

If matches.Count > 0 Then

finalContent = matches(0).SubMatches(0)

finalContent = Replace(finalContent, "\n\n", vbNewLine)

finalContent = Replace(finalContent, "\n", vbNewLine)

finalContent = Replace(Replace(finalContent, """", Chr(34)), """", Chr(34))

' 取消选中原始文本

Selection.Collapse Direction:=wdCollapseEnd

' 插入推理过程(如果存在)

If Len(reasoningContent) > 0 Then

Selection.TypeParagraph

Selection.TypeText "推理过程:"

Selection.TypeParagraph

Selection.TypeText reasoningContent

Selection.TypeParagraph

Selection.TypeText "最终回答:"

Selection.TypeParagraph

End If

' 插入最终回答

Selection.TypeText finalContent

' 将光标移回原来选中文本的末尾

originalSelection.Select

Else

MsgBox "Failed to parse API response.", vbExclamation

End If

Else

MsgBox response, vbCritical

End If

End Sub

上述代码这替换为你自己的Key:

保存VB脚本并关闭窗口,再点击"文件"-"选项"-"自定义功能区",我们选择这里的宏,就可以看到我们刚才创建的宏命令了。

五、新建宏命令组

我们在右侧继续右键"开发工具",在它下面新建一个组。

然后将这个组重命名为"AI"或者你喜欢的名称,再选一个你喜欢的图标。

将上面的宏添加到这个下面就可完成。

点击"确定",我们就可以在菜单栏的"开发工具"中看到这个按钮了。

我们在下面的Word文档中测试下这个功能,在Word里输入段文字,点击这个按钮。等待一会儿(DeepSeek R1在推理),就会出现DeepSeek的思考过程和最终结果

这样以后我们要写什么内容,要检查错别字,翻译、文章、方案等等需求都可以直接在Word里完成。

六、另存为模板

由于上面的操作只是针对当前这个Word文档,如果想每次打开都有这个脚本存在,我们只需要将这个Word文档另存为模板

这样下次打开文档还是会附带这个宏命令,就这样整个操作完成了,

相关推荐
java1234_小锋4 分钟前
一周学会Flask3 Python Web开发-response响应格式
开发语言·python·flask·flask3
Jelena157795857924 分钟前
使用Java爬虫获取1688 item_get_company 接口的公司档案信息
java·开发语言·爬虫
java1234_小锋6 分钟前
一周学会Flask3 Python Web开发-flask3模块化blueprint配置
开发语言·python·flask·flask3
我是苏苏31 分钟前
C#基础:使用Linq进行简单去重处理(DinstinctBy/反射)
开发语言·c#·linq
小小码农(找工作版)32 分钟前
C#前端开发面试题
开发语言·c#
不爱学英文的码字机器39 分钟前
Python爬虫实战:从零到一构建数据采集系统
开发语言·爬虫·python
我是哈哈hh40 分钟前
【JavaScript进阶】作用域&解构&箭头函数
开发语言·前端·javascript·html
鹿鸣悠悠1 小时前
Python 类和对象详解
开发语言·python
laocooon5238578861 小时前
用Python实现的双向链表类,包含了头插、尾插、归并排序等功能
开发语言·python
一只哒布刘1 小时前
第六次作业
开发语言·php