ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

AI编程工具WorkBuddy:用自然语言与语音生成Excel VBA宏

AI编程工具WorkBuddy:用自然语言与语音生成Excel VBA宏 这次我们来看 WorkBuddy。它是一款 AI 编程辅助工具核心卖点非常直接用自然语言甚至语音描述需求自动生成代码。放到 Excel 场景里最典型的用法就是“靠嘴编程”——你说一句“统计考勤迟到次数”它把 VBA 宏给你写出来你贴进 Excel 直接跑。不用背语法、不用记对象模型需求描述清楚代码基本就出来了。很多人卡在 VBA 上不是需求复杂而是语法记不住、对象搞不清。WorkBuddy 解决的就是这个翻译环节把一句话需求变成可运行的宏代码。配合语音输入基本能做到“边说需求边出代码”。对天天处理考勤、报表、数据清洗的办公人员来说这个效率提升非常明显。本文就用“考勤迟到统计”作为完整案例从环境准备、启动配置、需求描述、代码生成、运行验证、批量扩展到问题排查完整跑一遍。适合不熟悉 VBA 但经常处理 Excel 报表的办公人员也适合想评估 AI 编程辅助工具能不能真正提效的技术爱好者。整个过程你照着做就行不需要预先会写 VBA。1. 核心能力速览在开始部署之前先把 WorkBuddy 的能力边界和 Excel VBA 方案的定位说清楚。能力项说明项目定位AI 编程辅助工具使用自然语言或语音生成代码可大幅降低 VBA 编写门槛典型用法在 WorkBuddy 中输入中文需求自动生成 VBA 宏粘贴到 Excel 或 WPS 中运行输入方式文字输入、语音输入支持“靠嘴编程”的工作方式主要生成对象Excel VBA 宏、Office 自动化脚本也可扩展到其他编程任务目标用户不熟悉 VBA 的办公人员、Excel 重度使用者、需要快速生成报表宏的技术人员环境依赖需要安装 WorkBuddy 客户端并完成登录Excel 需要启用宏WPS 需要确认 VBA 组件已安装运行载体Excel 2013 及以上版本或支持 VBA 的 WPS Office是否支持批量生成后的 VBA 宏可在 Excel 中批量执行也可让 WorkBuddy 一次生成多个独立宏是否提供 API需以实际版本和官方文档为准不建议在未确认前做接口集成计费方式从用户讨论看涉及登录、兑换码、订阅等机制具体以官方渠道为准适合场景考勤统计、报表汇总、数据清洗、批量格式整理、自动填充、跨表汇总表格里有一个关键点要先提醒WorkBuddy 负责“生成代码”但“运行代码”的载体还是 Excel/WPS。也就是说WorkBuddy 替代的是你写 VBA 的过程不是替代 Excel 本身。考勤表还是要放在 Excel 里宏还是要回到 Excel 里跑。2. 适用场景与使用边界WorkBuddy 写 VBA 这件事解决的核心痛点是“需求到代码”的翻译成本。过去你要写一个统计宏得先搞明白 Range、Cells、Offset、Dictionary、数组这些概念再研究怎么遍历行、怎么匹配姓名、怎么输出统计表。这一套流程对没写过代码的人来说学习成本至少在几天到几周。但用 WorkBuddy 之后你只需要把统计规则描述清楚它直接给出代码。适合的场景非常明确考勤统计、加班时长计算、迟到早退统计。多表汇总、按照关键字拆分表格。数据清洗比如去空格、统一日期格式、提取拼音首字母。格式批量处理比如批量设置边框、列宽、打印区域。自动化报表生成每次点一下宏就能完成周报、月报。不适合的场景也要说清楚。WorkBuddy 生成的是辅助代码不是业务系统。如果你要处理非常复杂的多人协作流程、需要权限控制、需要实时数据同步那应该用专业的 OA 或人力资源系统而不是靠 Excel 宏硬扛。另外如果考勤数据包含敏感个人信息你不能把真实数据直接丢给在线 AI 工具处理应该先脱敏或者确认数据流向符合公司规定。使用边界还要特别注意三点宏的本质是代码。启用宏等于允许 Excel 执行一段程序来源不明的宏代码千万不要直接运行。AI 生成的代码需要人工复核。先备份文件再在副本上测试确认逻辑正确后再拿到正式文件上运行。涉及员工考勤、薪酬、人脸、声音、联系方式等数据时必须确认你已经获得授权并且使用方式符合公司信息安全制度。这些不是空话而是使用 AI 辅助编程工具的基本安全底线。考勤数据一旦泄露后果不只是代码报错那么简单。3. 环境准备与前置条件在开始使用 WorkBuddy 写 VBA 之前需要把环境准备好。整个准备过程不复杂但一步都不能省尤其是宏安全设置和测试数据准备。3.1 安装 WorkBuddy 客户端WorkBuddy 是客户端产品需要下载安装后才能使用。安装完成后一般需要注册账号并登录。如果拿到兑换码按官方提示完成兑换即可。具体下载地址和激活方式以官方渠道为准。安装时的建议使用 Windows 系统和 Excel 配合最顺畅。安装路径建议保持默认避免中文路径或特殊字符导致的问题。安装完成后先登录确认能打开对话界面再做后续操作。3.2 准备 Excel 或 WPS 环境WorkBuddy 生成的是 VBA 代码最终要在 Excel 或 WPS 里运行。Excel 用户需要确认版本建议 Excel 2013 或更高版本。打开 Excel 后按Alt F11能打开 VBA 编辑器说明 VBA 组件已正常安装。WPS 用户需要特别注意WPS 默认不一定带 VBA 组件。如果你用的是 WPS发现无法打开 VBA 编辑器就需要安装 WPS VBA 宏插件。网上有很多讨论“wps vba 宏插件下载”的帖子安装后重启 WPS 再试。启用宏的具体路径在 Excel 的“信任中心”文件 - 选项 - 信任中心 - 信任中心设置 - 宏设置宏设置建议选择“禁用所有宏并发出通知”这样打开包含宏的文件时 Excel 会提示你是否启用既安全又不影响使用。3.3 准备考勤测试数据强烈建议先用一份测试数据跑通流程不要直接拿真实考勤表试。测试数据 20 行左右就够。新建一个 Excel 文件命名为attendance_demo.xlsx第一个工作表改名为“考勤”。表结构如下A 列B 列姓名上班时间张三08:55李四09:10王五09:30张三09:05李四08:50这里的“上班时间”列可以输入时间格式也可以输入文本。为了保证测试稳定先在 Excel 里把 B 列设置为时间格式。3.4 规划输出区域考勤迟到统计的结果需要一个输出位置。典型做法是新建一个“统计”工作表第一行放表头“姓名”和“迟到次数”从第二行开始填入统计结果。WorkBuddy 生成代码时需要你告诉它这些信息描述越具体生成结果越准确。4. WorkBuddy 安装配置与 Excel 宏运行准备这一节解决两个问题WorkBuddy 怎么启动以及生成的 VBA 代码怎么在 Excel 里运行。4.1 WorkBuddy 启动方式WorkBuddy 是图形界面工具启动方式就是双击桌面图标或从开始菜单打开。启动后进入对话界面左边是会话列表右边是对话窗口。从相关讨论看WorkBuddy 还引入了 skill 机制你可以在工作台里查看是否已经有 Excel、VBA 相关的技能或模板有的话直接加载生成结果会更规范。启动后的配置建议把 Excel 和 WorkBuddy 窗口并排放置方便边描述需求边查看生成的代码。如果支持语音输入先测试麦克风是否正常。语音输入是“靠嘴编程”的核心依赖麦克风不好用体验会大打折扣。第一次使用时可以先让它生成一段简单的 VBA 代码比如“弹出一个提示框”确认工作流正常再进入正式需求。4.2 Excel 宏编辑器与模块管理WorkBuddy 只负责生成代码把代码放回 Excel 需要你手动操作一次。步骤固定熟悉后 30 秒内完成。第一步打开刚才准备的attendance_demo.xlsx。第二步按Alt F11打开 VBA 编辑器。第三步在左侧工程资源管理器中找到当前工作簿右键点击“插入”选择“模块”。这一步会创建一个新模块代码就放在这里。第四步把 WorkBuddy 生成的代码粘贴到模块中按F5运行。这里有一个常见误区有人把代码直接粘贴到 Sheet 或 ThisWorkbook 对象里也能运行但不利于管理。建议所有测试代码都放到独立模块里后续删除和修改都方便。4.3 宏安全与文件格式如果文件要保留宏代码必须另存为.xlsm格式而不是普通.xlsx格式。.xlsx默认不带宏关闭再打开后代码会丢失。保存路径文件 - 另存为 - 文件类型选择“Excel 启用宏的工作簿 (*.xlsm)”测试阶段建议频繁保存副本例如attendance_demo_v2.xlsm避免改坏代码后无法回退。5. 核心功能测试一句话生成考勤迟到统计宏这一节是文章的重点。我们用“考勤迟到统计”来完整测试 WorkBuddy 的“靠嘴编程”能力。5.1 需求描述在 WorkBuddy 对话输入框中直接输入下面这句话帮我写一个 Excel VBA 宏统计考勤表里每个人的迟到次数。 考勤表第一个工作表叫“考勤”A 列是姓名B 列是上班时间。 迟到标准上班时间晚于 9:00 算迟到。 输出新建一个名为“统计”的工作表第一行写“姓名”和“迟到次数”第二行开始按姓名统计迟到次数。如果支持语音输入直接按住语音按钮说完这段话效果也一样。这里的关键是描述要包含四类信息数据在哪里工作表名、行和列的位置。判断规则什么算迟到。输出形式新表、表头、内容。操作边界是统计所有人还是只统计某个人。需求描述越完整生成的代码越接近可用状态。如果 WorkBuddy 返回的代码有误你可以继续对话补充说明比如“B 列是文本格式需要先转成时间再比较”它会重新生成。5.2 生成的 VBA 代码示例下面是一段符合上述需求的 VBA 宏示例供参考和对照。Sub 统计迟到次数() Dim wsData As Worksheet Dim wsStat As Worksheet Dim lastRow As Long Dim dict As Object Dim key As String Dim i As Long Dim inTime As Date Dim lateFlag As Boolean Dim r As Long Dim k As Variant 读取考勤工作表 Set wsData ThisWorkbook.Sheets(考勤) lastRow wsData.Cells(wsData.Rows.Count, 1).End(xlUp).Row 使用字典记录每个人的迟到次数 Set dict CreateObject(Scripting.Dictionary) For i 2 To lastRow key wsData.Cells(i, 1).Value If Len(key) 0 Then 判断时间是否晚于 9:00 If IsDate(wsData.Cells(i, 2).Value) Then inTime CDate(wsData.Cells(i, 2).Value) lateFlag (inTime TimeValue(09:00:00)) If lateFlag Then If dict.Exists(key) Then dict(key) dict(key) 1 Else dict.Add key, 1 End If End If End If End If Next i 获取或新建“统计”工作表 On Error Resume Next Set wsStat ThisWorkbook.Sheets(统计) If wsStat Is Nothing Then Set wsStat ThisWorkbook.Sheets.Add wsStat.Name 统计 End If On Error GoTo 0 输出表头 wsStat.Cells(1, 1).Value 姓名 wsStat.Cells(1, 2).Value 迟到次数 输出统计结果 r 2 For Each k In dict.Keys wsStat.Cells(r, 1).Value k wsStat.Cells(r, 2).Value dict(k) r r 1 Next k MsgBox 统计完成共统计 dict.Count 人 End Sub这段代码的逻辑并不复杂先定位“考勤”工作表获取最后一行行号。用Scripting.Dictionary字典结构存放每个员工的迟到次数。遍历每一行判断上班时间是否晚于 9:00。在“统计”工作表中输出结果。核心思路是“字典聚合”这是 VBA 做分类统计最常用的方案。WorkBuddy 生成的代码大概率也是类似的思路。你拿到代码后不需要完全读懂每一行但至少要看懂三个位置数据源引用、判断条件、输出区域。5.3 运行与验证步骤把代码粘贴到 VBA 模块中后按F5运行。运行成功后Excel 会弹出提示框并自动切换到“统计”工作表。验证判断成功的标准是否生成了名为“统计”的工作表。是否有“姓名”和“迟到次数”两列表头。每个人的迟到次数是否和手工核对一致。建议在测试数据里故意放几个边界时间比如 08:59、09:00、09:01。如果 09:00 不算迟到、09:01 算迟到说明时间比较逻辑正确。5.4 功能扩展测试一个宏跑通之后可以继续用 WorkBuddy 扩展功能。比如在上面的基础上增加一个判断如果 A 列姓名相同但 B 列时间是文本格式需要先转换成时间再比较。再增加一个输出除了迟到次数还要统计每个人的出勤天数放到统计表的 C 列。增加一个提示如果统计表中已经有数据先清空旧数据再写入新结果避免重复累加。每提一个需求WorkBuddy 会在原代码基础上调整。这种迭代式的对话方式比一次性提十个需求更稳定也好排查问题。6. 批量任务处理与宏的工程化使用考勤迟到统计只是起点。实际工作中你可能需要处理几十个考勤文件、按月汇总、一次性跑完所有部门的数据。这类需求靠人工复制粘贴不现实必须用批量任务的方式解决。6.1 VBA 本身就是批量方案WorkBuddy 生成一个统计宏后这个宏已经具备批量能力它会自动遍历整个工作表不需要你手动逐行处理。但如果要处理“多个 Excel 文件”就需要一个遍历文件夹的宏。下面这段代码是一个通用框架用于批量打开文件夹里的所有.xlsx文件并执行某个统计过程Sub 批量处理文件夹() Dim folderPath As String Dim fileName As String Dim wb As Workbook 修改为你的考勤文件目录 folderPath D:\考勤数据\ fileName Dir(folderPath *.xlsx) Do While fileName Set wb Workbooks.Open(folderPath fileName) 在这里调用你需要的统计宏 例如 Call 统计迟到次数 wb.Close SaveChanges:True fileName Dir Loop MsgBox 批量处理完成 End Sub这段代码的关键点是Dir函数和Do While循环。Dir会逐个返回文件夹内符合条件的文件名循环体内打开文件、执行操作、关闭保存然后继续下一个。批量任务跑起来后Excel 会连续打开多个工作簿这个过程不要手动打断否则容易造成文件损坏。6.2 批量任务的工程化建议批量处理十几个文件时建议先做一次预演复制一个文件夹作为测试目录放 2 到 3 个测试文件。在测试文件上运行批量宏确认统计结果正确。确认无误后再切换到正式文件夹。处理过程中要加日志输出方便定位问题。最简单的日志方式是生成一个“处理记录”工作表每处理一个文件就记录文件名、处理时间、成功或失败状态。如果 WorkBuddy 有上下文用量上限批量需求建议拆成多个小任务。比如先让它生成“打开文件并统计”的宏再让它生成“把统计结果统一写入汇总表”的宏而不是一次对话同时生成十个需求否则容易出现生成结果不稳定或者“上下文用量满了”的提示。遇到上下文用量满的情况处理办法是新开一个会话把已经验证过的关键代码片段复制过去在此基础上继续提需求而不是把整个历史对话一次性搬过去。7. 资源占用与性能观察WorkBuddy 本身是客户端工具资源占用主要体现在对话生成阶段。实际使用中可以从三个维度观察。7.1 WorkBuddy 对话资源消耗对话时的主要消耗集中在 AI 生成代码的过程。生成期间 CPU 和内存会短暂上升生成结束后资源会回落。如果你在 WorkBuddy 里一次生成很长的代码等待时间会比短代码明显增加这是正常现象。要注意的是如果同时开着 Excel、浏览器、其他办公软件生成过程可能出现明显卡顿。建议生成代码时关掉不需要的窗口减少系统压力。7.2 Excel VBA 宏运行性能宏在 Excel 里运行时的性能和数据量、算法、屏幕刷新有关。数据量越大循环次数越多运行时间越长。逐行读写单元格比较慢数据量超过几千行时性能差异就开始明显。宏运行过程中 Excel 会持续刷新屏幕也会拖慢速度。如果你的考勤数据达到几万行可以在宏开头加上关闭屏幕刷新的代码Application.ScreenUpdating False 中间执行统计逻辑 Application.ScreenUpdating True这个优化对大规模数据非常有效。WorkBuddy 生成的代码不一定会自动加这一句数据量大的时候你自己补上即可。7.3 上下文用量与会话管理从用户讨论看WorkBuddy 有“上下文用量”机制。简单说它只能记住对话窗口里最近一段时间的内容。如果你的对话特别长或者需求描述特别复杂可能触发上下文达到上限的提示。管理上下文用量有几个实用技巧单个会话聚焦一个任务不要频繁切换主题。需要修改需求时把原始需求重新描述一遍而不是只说“改成另一个需求”。所有生成成功且验证过的代码先复制到本地保存避免依赖对话历史。对话太长时新开一个会话把关键需求描述和已知代码贴过去。这些做法能显著减少“上下文用量满了”的尴尬情况也能让生成结果保持稳定。8. 常见问题与排查方法实际使用 WorkBuddy 写 VBA 时最容易遇到下面这些问题。问题现象可能原因排查方式解决方案WorkBuddy 登录失败或兑换码无效网络问题、账号状态异常、兑换码输入错误检查网络重新核对兑换码联系官方客服确认账号状态语音输入没有反应麦克风权限未开启、语音功能未初始化检查系统麦克风设置和 WorkBuddy 语音设置重新授权麦克风重启 WorkBuddy生成的宏粘贴到 Excel 后无法运行VBA 功能未启用、模块未正确插入按 AltF11 检查能否打开 VBA 编辑器在信任中心启用宏重新插入模块运行报“下标越界”工作表名称与代码不一致检查代码中引用的 Sheet 名称把 Excel 表名改成代码里的名称或让 WorkBuddy 按实际表名重新生成统计结果全部为 0时间列是文本格式比较逻辑未生效检查 B 列单元格格式先将列转换为时间格式或生成代码时说明“时间是文本格式”运行后没有生成“统计”表代码执行出错中途停止在 VBA 代码中设置断点或使用 Debug.Print 观察检查是否有语法错误逐步执行定位问题WPS 无法打开 VBA 编辑器WPS 未安装 VBA 组件打开 WPS 后找“宏”入口安装 WPS VBA 宏插件并重启 WPSWorkBuddy 上下文用量满了对话过长、历史信息过多查看上下文用量提示新开会话精简需求描述只保留关键信息宏运行很慢单元格逐行读写、屏幕刷新未关闭观察运行时间检查数据量加Application.ScreenUpdating False改用数组批量读写宏意外删除了数据代码中包含删除或覆盖操作未备份检查代码中的 Delete、Rows.Delete、ClearContents运行前备份文件审查代码里的破坏性操作排查问题的基本原则是先看错误提示再定位是 WorkBuddy 生成问题还是 Excel 运行环境问题。WorkBuddy 生成问题可以通过修改需求描述重新生成Excel 运行环境问题则要检查宏设置、模块位置、Sheet 名称是否匹配。9. 最佳实践与使用建议把 WorkBuddy 用于 Excel VBA 自动化有六个建议可以直接照搬。9.1 需求描述模板化向 WorkBuddy 描述需求时套用固定模板能大幅提高生成质量数据位置工作表名、列的含义、数据从第几行开始。判断规则什么条件算迟到、什么条件算早退、哪些状态要排除。输出位置新表还是原表表头内容写入方式。边界条件空值处理、格式处理、重复数据处理。例如我的考勤表在“考勤”工作表A 列姓名B 列上班时间C 列下班时间从第 2 行开始。 迟到标准是上班时间超过 9:00早退标准是下班时间早于 18:00。 请统计每个人的迟到次数和早退次数输出到“统计”工作表中。这种描述方式所有关键信息都用短句表达AI 不容易出错。9.2 先用小型测试数据验证每次让 WorkBuddy 生成新宏都先在一个只有几十行数据的测试文件上运行。确认结果正确后再拿到真实文件上使用。测试数据可以刻意包含边界情况比如正好 09:00、空值、文本格式时间、重复姓名这样能提前暴露逻辑问题。9.3 代码必须有备份和审查流程AI 生成的代码不是“金标准”必须人工审查。重点检查三类操作打开和保存的文件路径是否正确。是否包含删除单元格、覆盖数据、清空工作表等破坏性操作。是否访问了预期之外的工作表或工作簿。所有代码进入正式环境前先做一次完整备份。这一点在考勤、薪酬等敏感数据场景里尤其重要。9.4 数据隐私与合规授权把考勤数据输入给 WorkBuddy 之前先确认数据是否包含姓名以外的敏感字段。员工考勤信息属于个人数据处理时必须遵守公司数据安全制度。测试阶段建议使用脱敏的假数据比如“员工A、员工B”代替真实姓名。正式使用前确认你拥有处理这些数据的权限。9.5 正确使用 skill 和模板从 WorkBuddy 用户讨论看它可以加载 skill 来增强特定任务的处理能力。如果工作台里有 Excel、VBA 或 Office 自动化相关的 skill建议优先加载。skill 本质上是一套针对特定场景的提示词和规则集合加载后生成的代码会更符合 Excel 宏的编写习惯。9.6 批量任务要留日志和重试机制批量处理多个文件时不要只依赖一个宏跑完整个流程。建议在宏里增加日志记录把处理成功的文件名和处理失败的文件名分开记录。失败的文件再单独处理避免一次批量任务出错后所有文件都要重新跑。10. 总结与下一步WorkBuddy 写 VBA 最值得尝试的点是把“需求翻译成代码”这个最难跨过的门槛直接拆掉了。你不用再记 Range、Cells 这些 VBA 对象不用再研究怎么遍历、怎么聚合、怎么输出只要把需求描述清楚代码就能出来。配合语音输入确实能做到“靠嘴编程”的效果。如果你现在想动手验证最先应该做的不是直接处理正式考勤表而是准备一份 20 行的测试数据把“考勤表 统计模板”这个最小场景跑通。从生成代码到粘贴运行整个流程走一遍之后你对 WorkBuddy 的能力边界会有直观判断。最容易踩的坑有两个。一是忽略宏安全设置把不明来源的代码直接运行二是不看代码就放到正式文件上执行一旦包含删除或覆盖逻辑数据可能直接丢失。这两个坑注意避开其他问题基本都是小事。接下来可以尝试扩展的方向包括把手工写好的宏挂到 Excel 按钮或快捷键上做成“一键统计”把单文件统计扩展成文件夹批量处理结合 WPS 环境验证是否兼容或者把 WorkBuddy 的使用范围从 Excel 扩展到其他编程任务。这套“自然语言生成代码 人工审查 测试验证”的流程本质上是一种通用工作方法学会了比某一个具体宏更有价值。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进