
1. 先搞清楚“AIVBA”到底能帮你做什么别急着写代码如果你经常需要处理Excel里的人员信息录入、核对、整理每次都是手动复制粘贴或者写一堆复杂的VBA公式那这个“AIVBA”的思路值得你花30分钟了解一下。它解决的核心问题不是让你从零开始学AI大模型而是把AI当成一个“聪明的数据处理器”帮你把非结构化的信息比如一段文字描述自动整理成Excel表格里规整的字段然后VBA负责执行最后的“填写”动作。举个例子你收到一段文本“张三男28岁技术部手机号138001380002023年入职”。传统做法是你得自己拆开分别填到姓名、性别、年龄、部门、电话、入职日期这些单元格里。而“AIVBA”的思路是你告诉AI通过一个简单的接口这段文本和表格的字段对应关系AI帮你解析好返回一个结构化的数据比如JSON然后VBA脚本拿到这个数据自动填入Excel指定位置。这最适合两类人一是经常需要从邮件、聊天记录、文档里批量提取人员信息录入Excel的行政、HR或业务人员二是已经会用VBA做自动化但苦于处理不规则文本的开发者。最关键的价值在于它把最耗时的“理解并拆分文本”工作外包给了AI你只需要关心“怎么把结果填进去”这个确定性动作。所以别被“AI”吓到我们这里谈的不是去训练模型而是利用现成的、能处理文本的AI服务比如大模型提供的API作为工具VBA作为执行臂组合成一个全自动的流水线。2. 动手前的环境与思路准备别在第一步就卡住在开始写任何代码之前先把环境和思路理清楚。很多人一上来就找VBA调用AI的代码结果连最基本的网络请求都发不出去。2.1 核心组件与替代方案这个方案需要三个部分协同工作AI服务端负责理解文本并返回结构化数据。你不能在VBA里直接跑一个大模型所以需要一个能通过HTTP接口调用的AI服务。常见选择有各大云厂商的AI平台API例如提供自然语言处理NLP或大模型服务的API。你需要关注其“信息抽取”或“文本结构化”功能。开源模型本地部署如果你有本地服务器可以部署一些轻量级的信息抽取模型并封装成HTTP服务。这对普通用户门槛较高。注意绝对不要尝试寻找或使用任何绕过正常网络访问限制的工具或服务。所有操作必须基于合法、合规、公开提供的API服务进行。VBA客户端位于你的Excel中。它的核心任务是从Excel单元格或外部文件读取待处理的原始文本。构建一个HTTP请求发送给上述AI服务端。接收并解析AI返回的JSON格式结果。将解析后的数据填写到Excel指定的单元格。Excel模板定义好人员信息的字段如A列姓名B列性别C列年龄等这是VBA填写数据的目标。对于绝大多数办公室场景最可行的起点是使用某个云服务提供的、有免费额度的文本理解API。先确保你能用手工方式比如用Postman或浏览器插件成功调用这个API并拿到返回结果这是后续所有自动化的基础。2.2 VBA的环境准备与权限VBA本身功能有限尤其是直接发起网络请求。你需要确保以下几点启用必要的引用在VBA编辑器按AltF11中点击“工具”-“引用”勾选Microsoft XML, v6.0或类似版本。这是用XMLHTTP对象发送HTTP请求的关键。处理JSON解析VBA原生不支持JSON。你需要一个解析器。最常用的是VBA-JSON一个开源的JsonConverter.bas模块。将其导入到你的VBA工程中就能用JsonConverter.ParseJson方法把API返回的字符串变成VBA能操作的对象。注意如果你遇到“错误424”等问题通常是因为JsonConverter模块没有正确导入或者返回的数据不是合法的JSON字符串。务必先单独测试JSON解析功能。WPS用户注意WPS对VBA的支持可能不完整特别是某些对象库。如果使用WPS请确认其VBA环境是否完整支持上述Microsoft XML引用。有时需要寻找兼容的替代方法或确认WPS VBA插件版本。3. 从单条测试到批量录入搭建你的自动化流水线不要想着一口吃成胖子。我们分三步走先让AI理解一句话再让VBA填一个格子最后组合起来处理一堆数据。3.1 第一步设计AI的“任务指令”提示词AI不是神仙你需要清晰地告诉它你要什么。这就是“提示词工程”的简化版。你发给AI API的请求里除了原始文本更关键的是一个清晰的“指令”。假设你的API支持类似ChatGPT的对话格式你的请求内容messages可以这样设计[ { role: system, content: 你是一个专业的人员信息提取助手。请从用户提供的文本中提取出姓名、性别、年龄、部门、手机号和入职年份。如果某项信息不存在则输出为空。请以严格的JSON格式回复格式为{\name\: \\, \gender\: \\, \age\: \\, \department\: \\, \phone\: \\, \join_year\: \\} }, { role: user, content: 原始文本张三男28岁技术部手机号138001380002023年入职 } ]关键点system指令里定义了输出格式。这比让AI自由发挥要可靠得多。你需要根据自己表格的字段调整这个JSON的键名。3.2 第二步编写VBA调用AI的核心函数下面是一个最基础的VBA函数它调用一个假设的AI API你需要替换your_api_key和your_endpoint为真实值。‘ 首先确保已导入JsonConverter.bas模块并添加了Microsoft XML引用 Function ExtractPersonInfoFromAI(rawText As String) As Object ‘ 此函数调用AI API解析返回的JSON Dim http As Object Dim url As String, apiKey As String Dim requestBody As String, responseText As String Dim json As Object ‘ 1. 设置API信息 (此处需替换为你的真实信息) url “https://api.example.com/v1/chat/completions” ‘ 示例端点 apiKey “your_api_key_here” ‘ 2. 构建请求JSON体 (基于第一步设计的提示词) requestBody “{“ _ “”“model”“: ”“gpt-3.5-turbo”“,” _ “”“messages”“: [“ _ “{”“role”“: ”“system”“, ”“content”“: ”“你是一个人员信息提取助手...同上”“},” _ “{”“role”“: ”“user”“, ”“content”“: ”“原始文本” rawText “”“}” _ “]” _ “}” ‘ 3. 创建并发送HTTP请求 Set http CreateObject(“MSXML2.XMLHTTP”) http.Open “POST”, url, False http.setRequestHeader “Content-Type”, “application/json” http.setRequestHeader “Authorization”, “Bearer ” apiKey http.send requestBody ‘ 4. 检查请求是否成功 If http.Status 200 Then responseText http.responseText ‘ 5. 解析返回的JSON (重点) ‘ 首先从返回的完整响应中提取AI回复的内容 Set json JsonConverter.ParseJson(responseText) ‘ 假设API返回结构是 {“choices”:[{“message”:{“content”: “{\”name\“:\”张三\“...}”}}]} Dim aiReply As String aiReply json(“choices”)(1)(“message”)(“content”) ‘ 6. 将AI回复的JSON字符串再次解析为对象 Set ExtractPersonInfoFromAI JsonConverter.ParseJson(aiReply) Else MsgBox “API请求失败” http.Status “ - ” http.statusText Set ExtractPersonInfoFromAI Nothing End If Set http Nothing End Function重要提示上面的代码是概念演示。实际API的请求格式、响应结构、鉴权方式可能完全不同。你必须根据你选用的AI服务商提供的文档来修改requestBody的构建和responseText的解析逻辑。先用手工测试工具如Postman调通API是成功的关键。3.3 第三步将AI结果填入Excel有了能返回信息对象的函数写一个子过程来驱动整个录入流程Sub AutoFillPersonInfo() Dim ws As Worksheet Dim lastRow As Long, i As Long Dim rawTextCell As Range Dim personInfo As Object ‘ 设置工作表 Set ws ThisWorkbook.Sheets(“人员信息表”) ‘ 修改为你的工作表名 ‘ 假设原始文本在A列从第2行开始 lastRow ws.Cells(ws.Rows.Count, “A”).End(xlUp).Row For i 2 To lastRow ‘ 跳过标题行 Set rawTextCell ws.Cells(i, “A”) If Len(Trim(rawTextCell.Value)) 0 Then ‘ 调用AI函数解析文本 Set personInfo ExtractPersonInfoFromAI(CStr(rawTextCell.Value)) If Not personInfo Is Nothing Then ‘ 将解析结果填入右侧各列 (根据你的表头调整列号) ws.Cells(i, “B”).Value personInfo(“name”) ‘ B列姓名 ws.Cells(i, “C”).Value personInfo(“gender”) ‘ C列性别 ws.Cells(i, “D”).Value personInfo(“age”) ‘ D列年龄 ws.Cells(i, “E”).Value personInfo(“department”) ‘ E列部门 ws.Cells(i, “F”).Value personInfo(“phone”) ‘ F列电话 ws.Cells(i, “G”).Value personInfo(“join_year”) ‘ G列入职年份 Else ws.Cells(i, “B”).Value “解析失败” End If ‘ 避免请求过快可添加短暂延迟 Application.Wait (Now TimeValue(“0:00:01”)) End If Next i MsgBox “信息录入完成” End Sub运行这个宏它就会读取A列的每一行文本调用AI然后把结果分别填到B到G列。一个最基础的“全自动人员信息录入系统”就完成了。4. 让系统更健壮错误处理、性能与扩展上面的代码能跑通但离“健壮”还差得远。在实际使用中你肯定会遇到各种问题。下面是我踩过坑后总结的几个优化点。4.1 必须加入的错误处理与日志网络请求和AI解析充满不确定性。绝对不能一个报错就导致整个流程崩溃。网络超时与重试XMLHTTP请求可能因为网络波动失败。你需要设置超时并加入重试机制。‘ 在发送请求前设置超时单位毫秒 http.setTimeouts 3000, 6000, 10000, 15000 ‘ 解析、连接、发送、接收的超时 ‘ 发送请求后可以检查状态如果失败进行有限次重试例如3次API响应错误AI服务可能返回错误如额度不足、内容违规、服务内部错误等。你的代码需要能捕捉这些错误并记录到日志或Excel的某一列而不是直接弹窗中断。If http.Status 200 Then ws.Cells(i, “H”).Value “API错误: ” http.Status “ | ” responseText ‘ 记录到H列 GoTo NextRow ‘ 跳过此行继续下一行 End IfJSON解析失败AI返回的内容可能偶尔不符合JSON格式。用On Error Resume Next包裹解析代码并检查解析后的对象是否有效。On Error Resume Next Set personInfo JsonConverter.ParseJson(aiReply) If Err.Number 0 Then ws.Cells(i, “H”).Value “JSON解析失败: ” Err.Description Set personInfo Nothing Err.Clear End If On Error GoTo 0添加进度提示处理大量数据时在状态栏显示进度避免用户以为程序卡死。Application.StatusBar “正在处理第 ” i “/” lastRow “ 条记录...”4.2 性能与成本考量批量处理与速率限制大多数AI API有每秒请求次数RPS限制。不要用For循环无脑快速发送。在循环内加入Application.Wait或Sleep函数进行延迟是必要的。更好的方式是如果API支持设计一个能一次性处理多条文本的请求减少调用次数。本地缓存对于重复性高的人员信息比如公司内部常见姓名、部门可以在首次解析后将(原始文本 解析结果)缓存到Excel的另一个隐藏工作表或字典里。下次遇到相同文本直接使用缓存结果无需再次调用AI节省成本和时间。成本控制关注AI API的计价方式按次、按token数。在处理海量数据前先用几百条数据测试估算总成本。可以考虑先对数据进行去重处理。4.3 功能扩展思路基础系统跑通后你可以根据需求扩展多源数据输入不仅可以从Excel列读取还可以修改代码使其能读取txt文件、扫描指定Outlook邮件文件夹、甚至监控某个网络表单。结果校验与清洗AI可能出错。可以增加一个校验步骤例如检查手机号是否为11位数字年龄是否为合理数字。可以在VBA中写简单的规则进行清洗或者将“低置信度”的结果标记出来供人工复核。触发自动化将AutoFillPersonInfo过程与按钮绑定或设置为打开工作簿时、更改特定单元格时自动运行。生成报告信息录入后可以自动触发另一段VBA代码生成统计报表、人员花名册等。5. 常见问题排查清单从结果倒推问题当你发现系统不工作时按照以下顺序排查能节省大量时间VBA宏根本不能运行检查Excel宏安全性设置“文件”-“选项”-“信任中心”-“宏设置”。检查VBA工程中是否缺少Microsoft XML引用或JsonConverter模块。运行后所有行的“解析结果”列都是空的或“解析失败”第一步检查网络请求是否发出在http.send之后立即用Debug.Print http.Status和Debug.Print http.responseText打印到立即窗口。如果状态码不是200问题出在API请求本身如URL、API Key错误网络不通。第二步检查API返回内容将打印出的responseText复制到在线的JSON格式化工具如 json.cn看是否是合法JSON。如果不是说明AI服务返回了错误信息根据错误信息调整你的请求参数或提示词。第三步检查JSON解析逻辑如果responseText是合法的但解析aiReply时出错说明你的代码在提取aiReply字符串时路径不对。仔细对照API文档找到AI回复文本在返回JSON中的正确位置。部分行解析成功部分失败检查失败的原始文本是否格式特殊包含大量换行、特殊符号或AI难以理解的内容。优化你的system提示词让它更鲁棒。检查是否触发了API的速率限制在循环中增加更长的延迟。解析结果错位如姓名填到了性别列检查ws.Cells(i, “B”).Value personInfo(“name”)这行代码中的列标“B”和JSON键名“name”是否与你的表格设计、AI返回的键名完全匹配。键名大小写敏感。WPS中运行报错确认WPS安装的VBA支持库是否完整。尝试使用更早期的Microsoft XML版本如v3.0。考虑将核心的HTTP请求和JSON解析逻辑用更通用的语言如Python编写成一个小工具然后VBA通过Shell调用这个外部工具绕过WPS VBA的限制。最后的核心建议不要试图第一次就做出完美无缺的系统。先用10行样本数据走通“单条文本 - AI API - 结果回填”这个最小闭环。这个闭环通了剩下的批量、容错、优化都是工程细节。这个“AIVBA”的组合其威力不在于VBA多复杂而在于你能否设计好给AI的“指令”并处理好两者之间脆弱的数据交接环节。