VBA脚本将DeepSeek嵌入Word中教程

embedded/2025/2/22 22:51:28/

一、获取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文档另存为模板

图片

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


http://www.ppmy.cn/embedded/164140.html

相关文章

C语言-----操作符的分类

1. 操作符的分类 •算术操作符&#xff1a; 、- 、 * 、/、% 移位操作符:<< >> 位操作符: & | ^ 赋值操作符: / 、 % 、 、- 、 *、/、 %、 <<、 >>、&、| 、 ^ 单⽬操作符&#xff1a;&#xff01;、 、- 、 & 、 * 、 、 …

【够用就好002-2】发布github项目仓库补充

请原谅我的内容比较碎&#xff0c;确实自学最大的弊端就是知识不系统&#xff0c;但是正如我标题所说&#xff0c;够用就好。 本章的内容是对第一次发布项目到github上后续的补充。 现在我们已经知道如何提交自己的code代码&#xff0c;但是 即开即用的软件现在还没提交。 如…

蓝桥杯篇---IAP15F2K61S2串口

文章目录 前言简介串口通信的基本参数1.波特率2.数据位3.停止位4.校验位 串口相关寄存器1.SCON2.SBUF3.PCON4.TMOD5.TH1/TL1 串口使用步骤1.配置波特率2.配置串口模式3.使能串口中断4.发送数据5.接收数据6.处理中断 示例代码&#xff1a;串口发送与接收示例代码&#xff1a;串口…

SQL FIRST() 函数详解

SQL FIRST() 函数详解 在SQL中&#xff0c;FIRST() 函数是一个用于处理查询结果的聚合函数。它通常与 GROUP BY 子句结合使用&#xff0c;用于返回每个分组中的第一个记录。本文将详细解释 FIRST() 函数的用法、参数、返回值以及与它的关联函数。 1. 函数概述 FIRST() 函数的…

前端笔试面试资源汇总

好的&#xff0c;我现在需要帮助用户找到热门实用的前端笔试面试贴。首先&#xff0c;回顾之前的对话&#xff0c;用户已经询问了常见的前端算法题目&#xff0c;现在他们想要更广泛的资源&#xff0c;可能包括面试题、面经、学习资料等。用户可能正在准备前端面试&#xff0c;…

机器学习_19 集成学习知识点总结

集成学习&#xff08;Ensemble Learning&#xff09;是一种强大的机器学习范式&#xff0c;通过组合多个模型的预测结果来提高整体性能和泛化能力。它在分类、回归和特征选择等任务中表现出色&#xff0c;广泛应用于各种实际问题。今天&#xff0c;我们就来深入探讨集成学习的原…

深度学习的力量:精准肿瘤检测从此不再遥远

目录 引言 一、医学图像分析的挑战与深度学习的优势 1.1 医学图像分析的挑战 1.2 深度学习的优势 二、肿瘤检测的深度学习模型设计 2.1 卷积神经网络&#xff08;CNN&#xff09;的基本原理 2.2 网络架构设计 2.3 模型训练 三、肿瘤检测中的挑战与解决方案 3.1 数据不…

【git】提交修改、回撤、回滚、Tag 操作讲解,与reset (--soft、--mixed、--hard) 的区别

Git 提交修改、回撤、回滚、Tag 操作详解 1. git commit --amend -m "message" 作用&#xff1a;修改最近一次提交的信息或内容。 适用场景&#xff1a; 提交后发现 commit message 写错了。提交后发现 少 add 了文件&#xff0c;想直接加进上一次提交。 示例 1&…