不知道你有没有过这样的幻想:在Excel里吭哧吭哧整理一堆数据,突然想,要是能让AI帮我分析一下该多好。然后你对着VBA编辑器发呆,心里琢磨着,这老古董VBA,能直接跟现在那些时髦的AI模型对话吗?

直接说结论吧:能。VBA完全可以调用AI接口,但这感觉有点像开着老爷车去连5G网络。VBA诞生于上个世纪,而我们现在谈论的AI API是典型的现代Web服务。把它们俩撮合到一起,技术上没问题,只是实现的方式不那么“优雅”。
核心的原理,其实就是让VBA去发起一个HTTP请求。你想想,平时我们在浏览器里访问一个网页,或者用Postman测试API,本质上都是向某个网址发送请求,然后接收返回的数据。VBA里有个叫MSXML2.XMLHTTP或WinHttp.WinHttpRequest.5.1的对象,干的就是这个活儿。它能让你的Excel表格,像一个小型浏览器一样,去“访问”AI服务商提供的那个特定网址(API端点)。
最大的挑战可能不在“调用”本身,而在“对话”的格式上。现在的AI接口,比如OpenAI、DeepSeek、文心一言这些,基本都遵循类似的规则:你需要以JSON格式,非常规整地把你的问题、选择的模型等信息打包好,放在请求体里发过去。
而VBA处理JSON,那真是“原生不支持,全靠手动拼”。你得用字符串拼接的方式,一点点组装出像{"model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "你好"}]}这样的文本,不能多一个逗号,也不能少一个引号。反过来,AI返回的也是一大串JSON,你需要像考古一样,用InStr、Mid这些函数在字符串里艰难地定位、提取出你想要的“回答”内容。这个过程,对新手来说,调试起来可能比写业务逻辑还头疼。
想象一下这个场景:你有一列来自不同国家的、格式杂乱的公司名称。你想快速把它们分类并标准化。手动处理?眼花缭乱。这时候,你可以写一段VBA,把每个名称依次发给AI,并发出指令:“请判断这个公司名称属于哪个国家,并返回标准化的名称格式”。AI返回结果后,VBA再自动把结果写回到旁边的单元格里。
这比手动复制粘贴到网页AI里问,再把答案抄回来,快了不止一个量级。虽然搭建这个自动化流程的初期需要一些脚本功夫,但一旦跑通,它就成了一个藏在Excel里的私人智能助手。
对于那些重度依赖Excel,且工作流程中存在大量需要“人类智能”判断的重复任务的用户来说,这绝对是打开了一扇新大门。它把AI能力无缝(虽然代码层面有点缝)嵌入到了你最熟悉的工作环境中。
说到底,用VBA调用AI接口,是一种实用主义的“土法炼钢”。它不酷,也不优雅,但它解决了一个很具体的问题:让最传统的办公工具,瞬间拥有了最前沿的智能。这本身,就挺有意思的。
也许有一天,微软会官方把Copilot的能力更深度地集成进VBA语法里。但在那之前,如果你不介意和字符串函数较较劲,那么你的Excel,完全可以比别人的更“聪明”一点。
参与讨论
能,但拼JSON字符串真的烦死。