如何在Excel上接入DeepSeek

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

实现原理简述

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

ai_tutorial_deepseek_integration_excel_1

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

第一步:准备工作

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

  1. 获取DeepSeek的API Key

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

  2. 启用Excel的开发者工具

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

      ai_tutorial_deepseek_integration_excel_2

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

  3. 调整信任设置

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

    ai_tutorial_deepseek_integration_excel_3

第二步:编写VBA代码

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

  1. 打开VBA编辑器

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

      ai_tutorial_deepseek_integration_excel_4

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

      ai_tutorial_deepseek_integration_excel_5

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

    ai_tutorial_deepseek_integration_excel_6

修改代码中的API Key

将代码中的 AI_KEY 替换为你获取的DeepSeek API Key,确保代码能够正确调用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. 添加自定义按钮

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

      ai_tutorial_deepseek_integration_excel_7

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

  2. 绑定宏到按钮

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

      ai_tutorial_deepseek_integration_excel_8

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

第四步:测试功能

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

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

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

    ai_tutorial_deepseek_integration_excel_9

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

    ai_tutorial_deepseek_integration_excel_10

额外提示

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

    ai_tutorial_deepseek_integration_excel_11

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

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

最后

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

阅读全文
img
AI工具教程
免费领取AI学习资料 进AI副业交流群
礼物
AI工具教程
免费领取AI学习资料 进AI副业交流群