DeepSeek 接入 Excel 完整教程

news2025/4/17 18:09:54

一、前期准备

1.1 获取 DeepSeek API 密钥

  1. 注册 DeepSeek 平台
    • 访问 DeepSeek 官方网站(或指定的 API 服务平台,如硅基流动等)。
    • 若尚未注册,按照平台指引创建新账号并完成登录。
  2. 创建 API 密钥
    • 进入用户控制面板,找到“API Keys”或“API 管理”选项。
    • 点击“创建 API Key”按钮,填写应用名称(如 “Excel 文本助手”)及所需权限。
    • 系统将生成类似 sk-xxxxxxxxxxxxxxxxxxxx 的 API 密钥,请复制并妥善保存,后续在 VBA 代码中需要使用此密钥。

二、配置 Excel 环境

2.1 启用“开发工具”选项卡

  1. 打开 Excel 后,点击【文件】>【选项】。
  2. 在“Excel 选项”对话框中,选择【自定义功能区】。
  3. 在右侧列表中勾选【开发工具】复选框,然后点击【确定】。
    – 此时 Excel 功能区上会显示“开发工具”选项卡。

2.2 启用宏

  1. 在【文件】>【选项】中选择【信任中心】,点击【信任中心设置】。
  2. 在“宏设置”中选择“启用所有宏”(出于安全考虑,请仅在可信环境下使用)。
  3. 同时建议勾选“信任对 VBA 工程对象模型的访问”。

三、编写 VBA 宏调用 DeepSeek API

3.1 打开 VBA 编辑器并插入模块

  1. 在“开发工具”选项卡中点击【Visual Basic】(或按快捷键 Alt+F11)。
  2. 在 VBA 编辑器中,右击当前工程(例如“VBAProject(您的工作簿名)”),选择【插入】>【模块】。
    – 建议将新模块命名为 DeepSeekModule

3.2 粘贴以下完整代码

下面的代码实现了以下功能:

  • 公共 API 调用函数:封装 HTTP 请求,向 DeepSeek API 发送请求并返回 JSON 字符串。
  • 封装不同模型调用:提供调用 “deepseek-chat” 与 “deepseek-reasoner” 两种模型的接口函数。
  • 主宏:获取当前单元格内容,将文本传给 API,然后将返回的处理结果写入当前单元格右侧的相邻单元格。
Option Explicit

'===============================
'【公共 API 调用函数】
'===============================
' 此函数向 DeepSeek API 发送请求。
' 参数:
'   api_key   —— 您的 API 密钥
'   inputText —— 要处理的文本(可以来自 Excel 单元格)
'   modelName —— 模型名称,如 "deepseek-chat" 或 "deepseek-reasoner"
' 返回值:
'   JSON 格式的响应字符串,或错误信息
Private Function CallDeepSeekAPI_Common(api_key As String, inputText As String, modelName 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 请求地址
    API = "https://api.deepseek.com/chat/completions"

    ' 构建 JSON 请求体,包含模型名称、系统角色提示与用户输入
    SendTxt = "{""model"": """ & modelName & """, " & _
              """messages"": [{" & _
                   """role"":""system"", ""content"":""你是 Excel 文案助手""}," & _
                   " {""role"":""user"", ""content"":""" & inputText & """}" & _
              "], ""stream"": false}"

    ' 发送 HTTP POST 请求
    On Error GoTo ErrHandler
    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

    If status_code = 200 Then
        CallDeepSeekAPI_Common = response
    Else
        CallDeepSeekAPI_Common = "Error: " & status_code & " - " & response
    End If

ExitPoint:
    Set Http = Nothing
    Exit Function

ErrHandler:
    CallDeepSeekAPI_Common = "Error: " & Err.Number & " - " & Err.Description
    Resume ExitPoint
End Function

' 调用 deepseek-chat 模型
Function CallDeepSeekChatAPI(api_key As String, inputText As String) As String
    CallDeepSeekChatAPI = CallDeepSeekAPI_Common(api_key, inputText, "deepseek-chat")
End Function

' 调用 deepseek-reasoner 模型
Function CallDeepSeekReasonerAPI(api_key As String, inputText As String) As String
    CallDeepSeekReasonerAPI = CallDeepSeekAPI_Common(api_key, inputText, "deepseek-reasoner")
End Function

'==============================================
'【主宏:使用 deepseek-chat 处理 Excel 中的文本】
'==============================================
Sub DeepSeekChat_Excel()
    Dim api_key As String
    Dim inputText As String
    Dim response As String
    Dim regex As Object
    Dim matches As Object
    Dim srcCell As Range
    Dim destCell As Range
    
    ' ========================================
    '【设置 API 密钥】
    ' ========================================
    ' 请将下面的文字替换为您的真实 API Key
    api_key = "在此处替换为您的 API Key"
    
    ' 检查 API 密钥是否为空
    If api_key = "" Then
        MsgBox "Please enter the API key.", vbCritical
        Exit Sub
    End If
    
    ' ========================================
    '【获取当前活动单元格文本】
    ' ========================================
    Set srcCell = ActiveCell
    If srcCell.Value = "" Then
        MsgBox "当前单元格为空,请选择包含文本的单元格。", vbExclamation
        Exit Sub
    End If
    
    inputText = srcCell.Value
    ' 对特殊字符进行转义处理
    inputText = Replace(inputText, "\", "\\")
    inputText = Replace(inputText, vbCrLf, " ")
    inputText = Replace(inputText, vbCr, " ")
    inputText = Replace(inputText, vbLf, " ")
    inputText = Replace(inputText, Chr(34), "\""")
    inputText = Replace(inputText, Chr(39), "\'")

    ' ========================================
    '【调用 DeepSeek API】
    ' ========================================
    response = CallDeepSeekChatAPI(api_key, inputText)
    
    If Left(response, 5) = "Error" Then
        MsgBox response, vbCritical
        Exit Sub
    End If

    ' ========================================
    '【解析 JSON 返回数据】
    ' ========================================
    ' 使用正则表达式提取返回 JSON 中 "content" 字段的值
    Set regex = CreateObject("VBScript.RegExp")
    With regex
        .Global = True
        .MultiLine = True
        .IgnoreCase = False
        .Pattern = """content"":""(.*?)"""
    End With
    Set matches = regex.Execute(response)
    If matches.Count > 0 Then
        response = matches(0).SubMatches(0)
        response = Replace(response, "\n", vbCrLf)
        response = Replace(response, "*", "")
        response = Replace(response, "#", "")
        
        ' ========================================
        '【将处理结果写入 Excel】
        ' ========================================
        ' 将结果写入当前单元格右侧的单元格(Offset(0,1))
        Set destCell = srcCell.Offset(0, 1)
        destCell.Value = response
    Else
        MsgBox "Failed to parse API response.", vbExclamation
    End If
End Sub

'==============================================
'【主宏:使用 deepseek-reasoner 处理 Excel 中的文本】
'==============================================
Sub DeepSeekReasoner_Excel()
    Dim api_key As String
    Dim inputText As String
    Dim response As String
    Dim regex As Object
    Dim matches As Object
    Dim srcCell As Range
    Dim destCell As Range
    
    ' 请将下面的文字替换为您的真实 API Key
    api_key = "在此处替换为您的 API Key"
    
    If api_key = "" Then
        MsgBox "Please enter the API key.", vbCritical
        Exit Sub
    End If
    
    ' 获取当前活动单元格
    Set srcCell = ActiveCell
    If srcCell.Value = "" Then
        MsgBox "当前单元格为空,请选择包含文本的单元格。", vbExclamation
        Exit Sub
    End If
    
    inputText = srcCell.Value
    inputText = Replace(inputText, "\", "\\")
    inputText = Replace(inputText, vbCrLf, " ")
    inputText = Replace(inputText, vbCr, " ")
    inputText = Replace(inputText, vbLf, " ")
    inputText = Replace(inputText, Chr(34), "\""")
    inputText = Replace(inputText, Chr(39), "\'")
    
    ' 调用 deepseek-reasoner 模型
    response = CallDeepSeekReasonerAPI(api_key, inputText)
    
    If Left(response, 5) = "Error" Then
        MsgBox response, vbCritical
        Exit Sub
    End If
    
    ' 使用正则表达式提取 JSON 中 "content" 字段
    Set regex = CreateObject("VBScript.RegExp")
    With regex
        .Global = True
        .MultiLine = True
        .IgnoreCase = False
        .Pattern = """content"":""(.*?)"""
    End With
    Set matches = regex.Execute(response)
    If matches.Count > 0 Then
        response = matches(0).SubMatches(0)
        response = Replace(response, "\n", vbCrLf)
        response = Replace(response, "*", "")
        response = Replace(response, "#", "")
        
        ' 将结果写入当前单元格右侧(或自行指定其他位置)
        Set destCell = srcCell.Offset(0, 1)
        destCell.Value = response
    Else
        MsgBox "Failed to parse API response.", vbExclamation
    End If
End Sub

3.3 保存 VBA 代码

  • 在 VBA 编辑器中点击【文件】>【保存】,或者直接关闭 VBA 编辑器即可。

四、将宏添加到 Excel 功能区(自定义按钮)

为了方便以后使用,可以将编写好的宏添加到 Excel 工具栏中:

  1. 打开 Excel 选项
    点击【文件】>【选项】,在“Excel 选项”中选择【自定义功能区】。
  2. 新增自定义选项卡或分组
    • 在右侧列表中点击“新建选项卡”,将其重命名为 “DeepSeek 助手”;
    • 在该选项卡下新增一个分组,如 “DeepSeek 工具”。
  3. 添加宏命令
    • 在左侧“从下列位置选择命令”中,选择“宏”,找到 DeepSeekChat_Excel 和(或) DeepSeekReasoner_Excel
    • 将所需宏拖拽到新建的分组中,并可修改按钮名称和图标。
  4. 点击确定,完成自定义设置后,在功能区中即可看到新添加的按钮。

五、使用说明与测试

5.1 准备测试数据

  1. 在 Excel 工作表中,在某个单元格中输入待处理文本(例如“请优化下面这段描述…”)。
  2. 选中该单元格后,当前激活单元格即为输入文本所在的单元格。

5.2 运行宏

  • 方法一:点击功能区中新添加的按钮(例如“DeepSeek 助手”中的 “Chat调用”按钮)。
  • 方法二:按 Alt+F8 打开宏列表,选择 DeepSeekChat_ExcelDeepSeekReasoner_Excel,点击“运行”。

5.3 查看结果

  • 运行后,程序会将 API 返回的处理结果写入当前激活单元格右侧的单元格中。
  • 若返回错误,则会弹出错误信息提示,可根据提示检查 API 密钥、网络连接或选中内容。

六、进阶与扩展建议

  1. 多模型调用:
    根据需要,可以增加更多模型调用函数,实现多种文本处理功能(如翻译、续写等)。
  2. 优化 JSON 解析:
    对于复杂的返回数据,建议引入专用的 VBA JSON 库(如 VBA-JSON),以提高解析鲁棒性和灵活性。
  3. 日志记录与错误重试:
    为方便调试和维护,可以增加日志记录功能,将错误信息写入文件或在 Excel 中记录,以便后续查看。
  4. 用户界面扩展:
    利用 Excel 的表单功能(UserForm)设计图形界面,实现 API Key 配置、模型选择等功能,提升用户体验。

总结

通过以上步骤,您已成功实现将 DeepSeek 接入到 Excel 中的完整流程:

  1. 前期准备: 注册 DeepSeek 并获取 API 密钥。
  2. 环境配置: 启用 Excel 的开发工具和宏。
  3. VBA 代码编写: 编写并调试调用 DeepSeek API 的代码,将返回内容插入到工作表中。
  4. 功能区集成: 将宏添加到自定义功能区,方便直接触发。
  5. 测试与扩展: 选中待处理文本,运行宏查看结果,并根据反馈调整代码。

这样一来,您就可以利用 DeepSeek 的智能文本处理功能,帮助自动化办公、快速润色与优化 Excel 中的文本内容。

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

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

相关文章

林纳斯·托瓦兹:Linux系统之父 Git创始人

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 林纳斯托瓦兹:Linux之父、Git创始人 一、传奇人物的诞生 1. 早年生活与家…

8. RabbitMQ 消息队列 + 结合配合 Spring Boot 框架实现 “发布确认” 的功能

8. RabbitMQ 消息队列 结合配合 Spring Boot 框架实现 “发布确认” 的功能 文章目录 8. RabbitMQ 消息队列 结合配合 Spring Boot 框架实现 “发布确认” 的功能1. RabbitMQ 消息队列 结合配合 Spring Boot 框架实现 “发布确认” 的功能1.1 回退消息 2.备用交换机3. API说…

维港首秀!沃飞长空AE200亮相香港特别行政区

4月13日-16日,第三届香港国际创科展在香港会议展览中心盛大举办。 作为国内领先、国际一流的eVTOL主机厂,沃飞长空携旗下AE200批产构型登陆国际舞台,以前瞻性的创新技术与商业化应用潜力,吸引了来自全球17个国家及地区的行业领袖…

redis6.2.6-prometheus监控

一、软件及系统信息 redis:redis-6.2.6 redis_exporter:redis_exporter-v1.50.0.linux-amd64.tar.gz # cat /etc/anolis-release Anolis OS release 8.9 granfa; 7.5.3 二、下载地址 https://github.com/oliver006/redis_exporter/releases?page…

如何在idea中快速搭建一个Spring Boot项目?

文章目录 前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热启动(热部署)结语 前言 Spring Boot 凭借其便捷的开发特性,极大提升了开发效率,为 Java 开发工作带来诸多便利。许多大伙伴希望快速…

itext7 html2pdf 将html文本转为pdf

1、将html转为pdf需求分析 经常会看到爬虫有这样的需求,将某一个网站上的数据,获取到了以后,进行分析,然后将需要的数据进行存储,也有将html转为pdf进行存储,作为原始存档,当然这里看具体的需求…

docker compose搭建博客wordpress

一、前言 docker安装等入门知识见我之前的这篇文章 https://blog.csdn.net/m0_73118788/article/details/146986119?fromshareblogdetail&sharetypeblogdetail&sharerId146986119&sharereferPC&sharesourcem0_73118788&sharefromfrom_link 1.1 docker co…

代码随想录算法训练营Day30

力扣452.用最少数量的箭引爆气球【medium】 力扣435.无重叠区间【medium】 力扣763.划分字母区间【medium】 力扣56.合并区间【medium】 一、力扣452.用最少数量的箭引爆气球【medium】 题目链接:力扣452.用最少数量的箭引爆气球 视频链接:代码随想录 题…

无感改造,完美监控:Docker 多阶段构建 Go 应用无侵入观测

作者:牧思 背景 随着云原生的普及,Golang 编程语言变得越来越热门。相比 Java,Golang 凭借其轻量,易学习的特点得到了越来越多工程师的青睐,然而由于 Golang 应用需要被编译成二进制文件再进行运行,Golan…

006.Gitlab CICD流水线触发

文章目录 触发方式介绍触发方式类型 触发方式实践分支名触发MR触发tag触发手动人为触发定时任务触发指定文件变更触发结合分支及文件变更触发正则语法触发 触发方式介绍 触发方式类型 Gitlab CICD流水线的触发方式非常灵活,常见的有如下几类触发方式: …

512天,倔强生长:一位技术创作者的独白

亲爱的读者与同行者: 我是倔强的石头_,今天是我在CSDN成为创作者的第512天。当系统提示我写下这篇纪念日文章时,我恍惚间想起了2023年11月19日的那个夜晚——指尖敲下《开端——》的标题,忐忑又坚定地按下了“发布”键。那时的我…

【目标检测】【YOLO综述】YOLOv1到YOLOv10:最快速、最精准的实时目标检测系统

YOLOv1 to YOLOv10: The fastest and most accurate real-time object detection systems YOLOv1到YOLOv10:最快速、最精准的实时目标检测系统 论文链接 0.论文摘要 摘要——本文是对YOLO系列系统的全面综述。与以往文献调查不同,本综述文…

日常学习开发记录-slider组件

日常学习开发记录-slider组件 从零开始实现一个优雅的Slider滑块组件前言一、基础实现1. 组件结构设计2. 基础样式实现3. 基础交互实现 二、功能增强1. 添加拖动功能2. 支持范围选择3. 添加垂直模式 三、高级特性1. 键盘操作支持2. 禁用状态 五、使用示例六、总结 从零开始实现…

Windows 系统如何使用Redis 服务

前言 在学习过程中,我们长期接触到的是Mysql 关系型数据库,也是够我们平时练习项目用的,但是后面肯定会有大型数据的访问就要借助新的新的工具。 一、什么是Redis Redis(Remote Dictionary Server)是一个基于内存的 键…

【unity游戏开发入门到精通——UGUI】CanvasScaler画布缩放器组件

注意:考虑到UGUI的内容比较多,我将UGUI的内容分开,并全部整合放在【unity游戏开发——UGUI】专栏里,感兴趣的小伙伴可以前往逐一查看学习。 文章目录 一、CanvasScaler画布缩放器组件是什么二、CanvasScaler的三种适配模式1、Cons…

Hugging Face 模型:AI 模型的“拥抱”与开源革命!!!

🌐 Hugging Face 模型:AI 模型的“拥抱”与开源革命 用表情符号、图表和代码,探索开源模型生态的底层逻辑与应用场景! 🌟 名字由来:为什么叫 Hugging Face? “Hugging”:象征 开放…

关于 人工智能(AI)发展简史 的详细梳理,按时间阶段划分,涵盖关键里程碑、技术突破、重要人物及挑战

以下是关于 人工智能(AI)发展简史 的详细梳理,按时间阶段划分,涵盖关键里程碑、技术突破、重要人物及挑战: 字数:约2500字 逻辑结构:时间线清晰,分阶段描述技术突破、关键事件与挑战…

微服务即时通信系统---(四)框架学习

目录 ElasticSearch 介绍 安装 安装kibana ES客户端安装 头文件包含和编译时链接库 ES核心概念 索引(Index) 类型(Type) 字段(Field) 映射(mapping) 文档(document) ES对比MySQL Kibana访问ES测试 创建索引库 新增数据 查看并搜索数据 删除索引 ES…

Android查看依赖树的方法,简单有效

一、使用命令打印 在工具栏“Terminal”中输入以下命令,即可打印依赖树信息 gradlew xxxx:dependencies (“xxxx”为module名称)二、工具栏双击打印 右侧“Gradle”工具栏打开按下图顺序依次查找到“dependencies”,双击后依赖树就会在控制台中打印出…

GitHub配置密钥

1.生成SSH密钥 1)检查 SSH 密钥是否存在 首先,确认是否已经在本地系统中生成了 SSH 密钥对。可以通过以下命令检查: ls -al ~/.ssh 在命令输出中,应该能看到类似 id_rsa 和 id_rsa.pub 这样一对文件。如果这些文件不存在&#…