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

图片

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/71614.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DeepSeek接入Siri(已升级支持苹果手表)完整版硅基流动DeepSeek-R1部署

DeepSeek接入Siri&#xff08;已升级支持苹果手表&#xff09;完整版硅基流动DeepSeek-R1部署 **DeepSeek** 是一款专注于深度学习和人工智能的工具或平台&#xff0c;通常与人工智能、机器学习、自动化分析等领域有关。它的主要功能可能包括&#xff1a;深度学习模型搜索&…

网站搭建基本流程

需求分析&#xff1a; 实现网站搭建的过程&#xff1a;首先进行网站的需求性分析 网站可分为前台系统和后台系统&#xff0c;由不同的功能拆分为不同的模块 如下是一个电商网站可以拆分出的模块&#xff1a; 在编写代码前&#xff0c;我们要先对网站进行架构&#xff0c;通过…

解决elementUi el-select 响应式不生效的问题

情况一,字段类型不匹配 考虑option的value值的字段类型是否和api返回的字段类型一致&#xff0c;如果一个为字符串一个为数字类型是无法匹配上的 <template> <div><el-select v-model"value" size"large"style"width: 240px"&…

QT实战-基于QWidget实现的异形tip窗口

本文主要介绍了qt中,基于QWidget实现异形tip窗口的几种实现方式,话不多说,先上图, 1.使用QPainter和QPainterPath实现 代码:tipwnd1.h #ifndef TIPWND1_H #define TIPWND1_H#include <QWidget>class TipWnd1 : public QWidget {Q_OBJECTQ_PROPERTY(QColor my_border…

【C++篇】树影摇曳,旋转无声:探寻AVL树的平衡之道

文章目录 从结构到操作&#xff1a;手撕AVL树的实现一、AVL树介绍1.1 什么是AVL树1.2 平衡因子的定义1.3 平衡的意义1.4 AVL树的操作 二、AVL树的节点结构2.1 节点结构的定义&#xff1a; 三、插入操作3.1 插入操作概述3.2 步骤1&#xff1a;按二叉查找树规则插入节点3.3 步骤2…

么是静态住宅IP,跨境电商为什么需要静态住宅IP

静态住宅IP是指直接分配给一台属于私人住宅网络的设备的固定IP地址&#xff0c;这种地址不会频繁更改。它们作为代理IP&#xff0c;使使用者能够通过这些代理服务器进行网络访问&#xff0c;而对外显示的则是该住宅的IP地址。由于这些IP地址属于真实的住宅或个人&#xff0c;并…

清华大学deepseek教程第四版 DeepSeek+DeepResearch 让科研像聊天一样简单(附下载)

deepseek使用教程系列 DeepSeekDeepResearch 让科研像聊天一样简单(附下载) https://pan.baidu.com/s/1VMgRmCSEzNvhLZQc8mu6iQ?pwd1234 提取码: 1234 或 https://pan.quark.cn/s/f3d4511b790a

leetcode刷题记录(一百零七)——279. 完全平方数

&#xff08;一&#xff09;问题描述 279. 完全平方数 - 力扣&#xff08;LeetCode&#xff09;279. 完全平方数 - 给你一个整数 n &#xff0c;返回 和为 n 的完全平方数的最少数量 。完全平方数 是一个整数&#xff0c;其值等于另一个整数的平方&#xff1b;换句话说&#x…

软考高级信息系统项目管理师笔记-第2章信息技术发展

第2章 信息技术发展 2.1 信息技术及其发展 1、按表现形态的不同,信息技术可分为硬技术(物化技术)与软技术(非物化技术)。前者指各种信息设备及其功 能,如传感器、服务器、智能手机、通信卫星、笔记本电脑。后者指有关信息获取与处理的各种知识、方法 与技能,如语言文字…

搭建RAG知识库的完整源码实现

搭建RAG知识库的完整源码实现&#xff08;基于Python 3.8&#xff09;&#xff1a; # -*- coding: utf-8 -*- # 文件名&#xff1a;rag_knowledge_base.py # RAG知识库搭建完整源码&#xff08;含中文注释&#xff09;import os import re import shutil import chromadb from…

利用AFE+MCU构建电池管理系统(BMS)

前言 实际BMS项目中&#xff0c;可能会综合考虑成本、可拓展、通信交互等&#xff0c;用AFE&#xff08;模拟前端&#xff09;MCU&#xff08;微控制器&#xff09;实现BMS&#xff08;电池管理系统&#xff09;。 希望看到这篇博客的朋友能指出错误或提供改进建议。 有纰漏…

基于SpringBoot的智慧家政服务平台系统设计与实现的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

什么是 Cloud Studio DeepSeek ; 怎么实现Open WebUI快速体验

什么是 Cloud Studio DeepSeek ;怎么实现Open WebUI快速体验 一、概述 欢迎使用 Cloud Studio DeepSeek 工作空间!我们已为您预装并启动了以下服务,等待加载十几秒即可查看效果: Ollama 服务:支持通过 API 调用 DeepSeek 模型。 AnythingLLM 前端服务:提供交互式聊天界…

【Python 语法】常用 Python 内置函数

reversed() 反转reversed() 的语法反转字符串、列表、元组 sorted() 自定义排序sorted() 语法使用示例1. 基本排序&#xff1a;默认升序排列2. 基本排序&#xff1a;降序排列3. 自定义排序&#xff1a;使用 key 参数4. 自定义排序&#xff1a;按某种规则进行排序5. 排序字典&am…

[网络] 如何开机自动配置静态IP,并自动启动程序

背景&#xff1a; 需要固定ip地址&#xff0c;并且能够自动启动可执行文件。 流程&#xff1a; 1.在/etc/network/interfaces 中添加 auto eth0 iface eth0 inet staticaddress 192.168.1.100netmask 255.255.255.0gateway 192.168.1.1 2.将下面这行代码添加自动启动脚本 …

打造智能聊天体验:前端集成 DeepSeek AI 助你快速上手

DeepSeek AI 聊天助手集成指南 先看完整效果&#xff1a; PixPin_2025-02-19_09-15-59 效果图&#xff1a; 目录 项目概述功能特点环境准备项目结构组件详解 ChatContainerChatInputMessageBubbleTypeWriter 核心代码示例使用指南常见问题 项目概述 基于 Vue 3 TypeScrip…

【C# 数据结构】队列 FIFO

目录 队列的概念FIFO (First-In, First-Out)Queue<T> 的工作原理&#xff1a;示例&#xff1a;解释&#xff1a; 小结&#xff1a; 环形队列1. **FIFO&#xff1f;**2. **环形缓冲队列如何实现FIFO&#xff1f;**关键概念&#xff1a; 3. **环形缓冲队列的工作过程**假设…

Mac 清理缓存,提高内存空间

步骤 1.打开【访达】 2.菜单栏第五个功能【前往】&#xff0c;点击【个人】 3.【command shift J】显示所有文件&#xff0c;打开【资源库】 4.删除【Containers】和【Caches】文件 Containers 文件夹&#xff1a;用于存储每个应用程序的沙盒数据&#xff0c;确保应用程序…

Hutool - DFA:基于 DFA 模型的多关键字查找

一、简介 在文本处理中&#xff0c;常常需要在一段文本里查找多个关键字是否存在&#xff0c;例如敏感词过滤、关键词匹配等场景。Hutool - DFA 模块基于确定性有限自动机&#xff08;Deterministic Finite Automaton&#xff0c;DFA&#xff09;模型&#xff0c;为我们提供了…

C++STL容器之map

1.介绍 map是 C 标准模板库&#xff08;STL&#xff09;中的一个关联容器&#xff0c;用于存储键值对&#xff08;key-value pairs&#xff09;。map中的元素是按照键&#xff08;key&#xff09;进行排序的&#xff0c;并且每个键在容器中是唯一的。map通常基于红黑树&#xf…