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文档另存为模板

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

相关推荐
东方佑3 分钟前
深度解析Python-PPTX库:逐层解析PPT内容与实战技巧
开发语言·python·powerpoint
水w14 分钟前
【Android Studio】如何卸载干净(详细步骤)
android·开发语言·android studio·activity
weixin_3077791315 分钟前
判断HiveQL语句为建表语句的识别函数
开发语言·数据仓库·hive·c#
一顿操作猛如虎,啥也不是!20 分钟前
JAVA-Spring Boot多线程
开发语言·python
我是苏苏24 分钟前
C#高级:利用LINQ进行实体列表的集合运算
c#·linq
v维焓29 分钟前
C++(思维导图更新)
开发语言·c++·算法
jiet_h29 分钟前
深入解析KSP(Kotlin Symbol Processing):现代Android开发的新利器
android·开发语言·kotlin
_未知_开摆31 分钟前
uniapp APP端在线升级(简版)
开发语言·前端·javascript·vue.js·uni-app
花月C36 分钟前
Spring IOC:容器管理与依赖注入秘籍
java·开发语言·rpc
ylfhpy43 分钟前
Java面试黄金宝典22
java·开发语言·算法·面试·职场和发展