如何在Excel上接入DeepSeek
大家有没有想过,如果能在Excel表格中直接调用AI,那处理数据、生成报告甚至完成自动化任务,是不是就省时省力多了?今天,我就带大家详细讲解如何将DeepSeek接入到Excel中,让表格也能“开口说话”,实现AI加持的智能化办公。
实现原理简述
在开始操作之前,先简单讲一下实现的原理:通过DeepSeek提供的API,我们可以在Excel中调用其强大的AI能力。
具体来说,利用VBA(Visual Basic for Applications)编写代码,连接DeepSeek的API接口,实现从表格中选取数据、发送请求并接收AI生成的结果。整个过程需要一些编程基础,但即使是小白,按照步骤操作也能轻松上手。
第一步:准备工作
在正式操作之前,确保以下几点准备就绪:
获取DeepSeek的API Key
由于官网服务器资源紧张,已暂停 API 服务充值,所以我们需要其他的方法来获取,具体请看这篇:【获取DeepSeek API】,但最好用官方渠道的API。
启用Excel的开发者工具
打开Excel,依次点击“文件 -> 选项 -> 自定义功能区”,勾选“开发工具”,然后点击“确定”。
这一步会在Excel的菜单栏中增加一个“开发工具”选项卡。
调整信任设置
点击“文件 -> 选项 -> 信任中心 -> 信任中心设置 -> 宏设置”,勾选“启用所有宏”和“信任对VBA工程对象模型的访问”,然后依次点击“确定”。
第二步:编写VBA代码
接下来是最关键的一步,我们需要在Excel中编写VBA代码,连接DeepSeek的API并实现功能。具体步骤如下:
打开VBA编辑器
点击菜单栏的“开发工具 -> Visual Basic”,会弹出一个新窗口。
在窗口中点击“插入 -> 模块”,创建一个新的代码模块。
粘贴核心代码
在新创建的模块中,复制并粘贴以下代码:
修改代码中的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的功能。具体步骤如下:
添加自定义按钮
点击“文件 -> 选项 -> 自定义功能区”,右键点击“开发工具”,选择“添加新组”。
选中新建的组,右键重命名为“DeepSeek”,并选择一个喜欢的图标。
绑定宏到按钮
在左侧的命令列表中选择“宏”,找到刚才创建的宏“MainTask”。
点击“添加”到右侧的DeepSeek组中,并点击确定。
第四步:测试功能
现在我们来验证一下DeepSeek是否成功接入Excel:
打开一个Excel工作表,输入一些数据,比如“你好啊!”。
选中这段文字,点击菜单栏中的“MainTask”按钮。
如果一切设置正确,DeepSeek会返回一段文字,并显示在表格的指定单元格中。
额外提示
引用必要的库
在VBA编辑器中,点击“工具 -> 引用”,确保勾选以下库:- Microsoft Scripting Runtime
- Microsoft XML, v6.0
处理可能的错误
如果运行过程中出现错误,可以尝试以下解决方法:- 检查API Key是否正确。
- 确保网络连接正常。
- 调整代码中的参数设置。
最后
整个操作下来,虽然涉及一些编程内容,但总体来说还是比较简单的。DeepSeek接入Excel后,确实能让表格处理更加智能化,尤其是在数据分析、自动化任务等方面,效率提升非常明显。如果你也想让Excel“聪明”起来,不妨试试这个方法,绝对值得一试!