DeepSeek教程

本教程详细介绍了如何将 DeepSeek 接入 Excel,提供智能化表格处理功能,包含核心代码和操作步骤。

大家有没有想过,如果能在 Excel 表格中直接调用 AI,那处理数据、生成报告甚至完成自动化任务,是不是就省时省力多了?今天,我就带大家详细讲解如何将 DeepSeek 接入到 Excel 中,让表格也能 “开口说话”,实现 AI 加持的智能化办公。

实现原理简述

在开始操作之前,先简单讲一下实现的原理:通过 DeepSeek 提供的 API,我们可以在 Excel 中调用其强大的 AI 能力。

具体来说,利用 VBA(Visual Basic for Applications)编写代码,连接 DeepSeek 的 API 接口,实现从表格中选取数据、发送请求并接收 AI 生成的结果。整个过程需要一些编程基础,但即使是小白,按照步骤操作也能轻松上手。

第一步:准备工作

如果你还没有 Office,那你可以点击后面的链接获取 Office:【Office 365 个人版家庭版】

在正式操作之前,确保以下几点准备就绪:

  1. 获取 DeepSeek 的 API Key

    由于官网服务器资源紧张,已暂停 API 服务充值,所以我们需要其他的方法来获取,具体请看这篇:【获取 DeepSeek API】,但最好用官方渠道的 API。

  2. 启用 Excel 的开发者工具

    打开 Excel,依次点击 “文件 -> 选项 -> 自定义功能区”,勾选 “开发工具”,然后点击 “确定”。

    这一步会在 Excel 的菜单栏中增加一个 “开发工具” 选项卡。

  3. 调整信任设置

    点击 “文件 -> 选项 -> 信任中心 -> 信任中心设置 -> 宏设置”,勾选“启用所有宏” 和“信任对 VBA 工程对象模型的访问”,然后依次点击“确定”。

第二步:编写 VBA 代码

接下来是最关键的一步,我们需要在 Excel 中编写 VBA 代码,连接 DeepSeek 的 API 并实现功能。具体步骤如下:

  1. 打开 VBA 编辑器

    • 点击菜单栏的 “开发工具 -> Visual Basic”,会弹出一个新窗口。

    • 在窗口中点击 “插入 -> 模块”,创建一个新的代码模块。

  2. 粘贴核心代码
    在新创建的模块中,复制并粘贴以下代码:

修改代码中的 API Key

将代码中的 AI_KEY 替换为你获取的 DeepSeek API Key(如果还没获取 API KEY,具体请看这篇:【获取 DeepSeek API】),确保代码能够正确调用 DeepSeek 的服务。

对话功能核心代码(必要):

'VBA代码应用
'▲▲▲ API配置区 ,修改API-key!其他不变
Const AI_URL As String = "https://api.deepseek.com/chat/completions"
'填写你的API key
Const AI_KEY As String = "xxx"

Const AI_MODEL As String = "deepseek-chat"

'AI交互函数不变
Private Function GetAIResponse(prompt As String) As String
    Dim oXmlHttp As Object, requestBody As String
    Dim startTime As Double, apiResponse As String

    Const TIMEOUT_MSG As String = "请求超时,可能原因:" & vbCrLf & _
                                "1. 网络连接问题" & vbCrLf & _
                                "2. API服务繁忙" & vbCrLf & _
                                "是否重试?"
    Const PROCESSING_MSG As String = "AI分析中,已耗时 "

    On Error GoTo ErrorHandler
Set oXmlHttp = CreateObject("MSXML2.ServerXMLHTTP.6.0")

'▲▲▲ 超时参数配置 ▲▲▲
    oXmlHttp.setTimeouts 5000, 8000, 20000, 60000

    '▼▼▼ 构建专业请求 ▼▼▼
With oXmlHttp
        .Open "POST", AI_URL, False
        .setRequestHeader "Content-Type", "application/json;"
        .setRequestHeader "Authorization", "Bearer " & AI_KEY
        .setRequestHeader "Accept", "*/*"
End With

    requestBody = "{""model"":""" & AI_MODEL & """," & _
"""messages"":[{""role"":""user"",""content"":""" & JSONEscape(prompt) & """}]," & _
"""temperature"":0.7,""max_tokens"":512}"

'▲▲▲ 异步处理控制 ▲▲▲
    startTime = Timer
    oXmlHttp.send requestBody

    Do While oXmlHttp.readyState <> 4
        If Timer - startTime > 60 Then
            If MsgBox(TIMEOUT_MSG & "耗时:" & Format(Timer - startTime, "0.0") & "秒", _
                      vbCritical + vbRetryCancel) = vbRetry Then
                oXmlHttp.abort
                startTime = Timer
                oXmlHttp.send requestBody
            Else
                Exit Function
            End If
        End If
        DoEvents
        Application.StatusBar = PROCESSING_MSG & Format(Timer - startTime, "0.0") & "秒"
    Loop

    '▼▼▼ 响应处理 ▼▼▼
If oXmlHttp.Status = 200 Then
        apiResponse = oXmlHttp.responseText
        GetAIResponse = ExtractJSONContent(apiResponse)
Else
        Err.Raise vbObjectError + 1, , "API错误:" & oXmlHttp.Status & " - " & oXmlHttp.statusText
End If

Exit Function

ErrorHandler:
If Err.Number = -2147012894 Then
If MsgBox(TIMEOUT_MSG, vbExclamation + vbRetryCancel) = vbRetry Then Resume
Else
        MsgBox "AI交互错误:" & Err.Description, vbCritical
End If
    GetAIResponse = "错误:" & Err.Description
Finally:
    Application.StatusBar = False
Set oXmlHttp = Nothing
End Function

'辅助函数:JSON转义
Private Function JSONEscape(str As String) As String
    JSONEscape = Replace(Replace(Replace(str, "\", "\\"), """", "\"""), vbCrLf, "\n")
End Function

'辅助函数:提取JSON内容
Private Function ExtractJSONContent(responseText As String) As String
    Dim contentStart As Long, contentEnd As Long
    contentStart = InStr(responseText, """content"":""") + 11
    contentEnd = InStr(contentStart, responseText, """")
    ExtractJSONContent = Replace(Mid(responseText, contentStart, contentEnd - contentStart), "\n", vbCrLf)
End Function


'主任务:数据处理流程
Sub MainTask()
    Dim prompt As String, aiResponse As String
    Dim ws As Worksheet

    On Error GoTo ErrorHandler
    Set ws = ActiveSheet


'▲▲▲ 构建专业提示词 ▲▲▲ 提问写在A2
    prompt = Range("A2")

    '▼▼▼ AI交互 ▼▼▼
    aiResponse = GetAIResponse(prompt)

'▲▲▲ 结果输出 在A4
    ws.Range("A4").Value = aiResponse
    ws.Range("A4").WrapText = True
    Exit Sub

ErrorHandler:
    MsgBox "处理数据时发生错误:" & Err.Description, vbCritical
End Sub


第三步:自定义功能区

为了让操作更加方便,我们可以在 Excel 的菜单栏中添加一个按钮,用来触发 DeepSeek 的功能。具体步骤如下:

  1. 添加自定义按钮

    • 点击 “文件 -> 选项 -> 自定义功能区”,右键点击 “开发工具”,选择 “添加新组”。

    • 选中新建的组,右键重命名为 “DeepSeek”,并选择一个喜欢的图标。

  2. 绑定宏到按钮

    • 在左侧的命令列表中选择 “宏”,找到刚才创建的宏 “MainTask”。

    • 点击 “添加” 到右侧的 DeepSeek 组中,并点击确定。

第四步:测试功能

现在我们来验证一下 DeepSeek 是否成功接入 Excel:

  1. 打开一个 Excel 工作表,输入一些数据,比如 “你好啊!”。

  2. 选中这段文字,点击菜单栏中的 “MainTask” 按钮。

  3. 如果一切设置正确,DeepSeek 会返回一段文字,并显示在表格的指定单元格中。

额外提示

  1. 引用必要的库
    在 VBA 编辑器中,点击 “工具 -> 引用”,确保勾选以下库:

    • Microsoft Scripting Runtime
    • Microsoft XML, v6.0
  2. 处理可能的错误
    如果运行过程中出现错误,可以尝试以下解决方法:

    • 检查 API Key 是否正确。
    • 确保网络连接正常。
    • 调整代码中的参数设置。

最后

整个操作下来,虽然涉及一些编程内容,但总体来说还是比较简单的。DeepSeek 接入 Excel 后,确实能让表格处理更加智能化,尤其是在数据分析、自动化任务等方面,效率提升非常明显。如果你也想让 Excel“聪明” 起来,不妨试试这个方法,绝对值得一试!