
Excel 表里已经存好了账号、密码和姓名,怎样给它加一个能输入、验证和提示结果的登录窗口?这个案例用 WorkBuddy 配合 VBAYYDS,先生成真实 VBA 窗体,再补齐登录代码,最后用 UITest 自动输入账号密码、点击按钮,核对窗体返回的结果。
不需要先学会给控件起名或编写事件过程。你可以直接用嘴说需求,通过语音输入提示词;先看设计是否合适,再确认功能。本篇结合实际提示词、生成代码和测试记录,说明每一步该交代什么、该检查什么。
本次使用 WPS 表格运行 Excel 宏工作簿,文件为 .xlsm。账号表保持可见,数据均为虚构教学数据。这个登录窗口用于学习本地表单交互,不是保护真实账号密码的安全认证系统。
1 先把账号表和登录规则说清楚
工作表名为“账号设置”,A4:C4 是表头,A5:C7 放了三组演示记录。账号和密码列预先设为文本,避免 0007 和 001073 被当成数字而丢掉开头的零。

图1 实际账号设置表 三组凭据均为虚构演示数据
| 账号 | 演示密码 | 姓名 |
|---|---|---|
| demo001 | Demo@073 | 林晓 |
| demo002 | Start@073 | 陈晨 |
| 0007 | 001073 | 许悦 |
窗体每次登录都从当前工作簿读取这张表,不把账号密码写死在代码里,也不改写源数据。账号忽略首尾空格和大小写;密码按原样比较,区分大小写,不去掉空格,也不转成数字。
界面只保留两个输入框、登录、清空、取消三个按钮,以及提示区域。密码用星号显示;输错统一提示“账号或密码错误”;正确时显示欢迎和对应姓名。登录校验成功或失败后都会清空密码,清空按钮则同时清掉两个输入框。
把这些规则先说清楚,AI 才知道“能登录”具体意味着什么。这里不增加注册、改密、登录日志或权限管理,先把一个小功能做完整。
2 直接用自然语言提出需求
在 VBA 中通过 VBAYYDS 菜单获取项目路径,把项目文件夹加入 WorkBuddy 任务,让它能读取当前工作簿的导出信息和相关技能。下面是本次实际发送的首轮提示词,保留原文。
请使用vba相关技能 使用vba窗体完成以下任务。
帮我给这个Excel做一个登录窗口,账号密码从“账号设置”表读取。密码显示成星号,输错要提醒,正确就显示欢迎和姓名,还能清空或取消。使用柔和蓝白(office-gentle)主题,明亮浅色外观。先给我看窗体设计。

图2 WorkBuddy 中实际发送的首轮需求
这段话先指定 VBA 技能和登录窗口这个目标,再交代数据来自哪里、按钮要做什么,以及希望的外观。最末一句“先给我看窗体设计”让任务停在可确认的界面阶段。括号中的主题名是本案例选定的样式,零基础使用者也可以只说“柔和的蓝白色,明亮一点”。
项目文件夹提供工作簿上下文,提示词提供业务意图,两者需要配合。自动测试并不在这一轮要求里,而是在确认设计后的下一轮提出,避免把后续补充内容误认为首轮已经包含。
3 先确认窗体再生成登录代码
WorkBuddy 调用窗体相关技能生成蓝白色设计预览,包含两个输入框、三个按钮和标签,共九个控件。确认后生成的是可以继续在 VBA 中编辑的真实 UserForm,不是一张只能观看的界面图片。

图3 WorkBuddy 生成的登录窗体设计预览
确认设计之后,再要求它补齐登录逻辑,并使用 VBAYYDS 的 UITest 自动输入账号密码、点击按钮,检查空输入、错误输入、正确登录、清空和关闭重开。当前环境是 WPS,运行宏使用 VBAYYDS CLI,不需要到 VBA 界面点击运行按钮。

图4 WorkBuddy 已写入登录代码并准备开展测试 此时不代表测试全部通过
4 看懂代码如何连接表格和窗体
标准模块 m登录 中的 Main 显示 frmLogin,窗体代码负责按钮响应和输入状态。自动测试使用 VBAYYDS 提供的可操作窗体入口,与普通显示入口有所区别。

图5 VBA 中生成的查表代码 每次登录读取账号设置
Btn登录_Click 先检查空输入,再调用 取姓名 查找记录。查找函数从第 5 行循环到账号列最后一个非空行,读取账号、密码和姓名。下面摘录实际比较部分。
表账号 = Trim(ws.Cells(r, 1).Text)
表密码 = ws.Cells(r, 2).Text
表姓名 = ws.Cells(r, 3).Text
If LCase(表账号) = LCase(账号) Then
If 表密码 = 密码 Then
取姓名 = 表姓名
Exit Function
End If
End If
这里 .Text 读取单元格显示文本,配合预设文本格式保留前导零,因此表格格式和列宽也属于使用条件。账号先转小写比较,密码不做转换;当前模块默认按二进制方式比较字符串,所以密码区分大小写。
初始化和清空按钮共用 重置输入;取消按钮执行 Unload Me。重新打开时再次初始化,避免残留旧提示和密码。
5 用自动输入和点击验证业务结果
WorkBuddy 通过 UITest 发现控件、输入内容、点击按钮并读取提示。下表汇总录制及后续补充核验的九项业务结果,不代表全部由 WorkBuddy 单独完成。
| 检查项 | 实际结果 | 核验 |
|---|---|---|
| 账号密码为空 | 请输入账号和密码 | 通过 |
| demo001 使用错误密码 | 账号或密码错误 | 通过 |
| demo001 使用 demo@073 | 账号或密码错误 | 通过 |
| 使用未知账号 | 账号或密码错误 | 通过 |
| demo001 正确登录 | 登录成功,欢迎林晓 | 通过 |
| demo002 正确登录 | 登录成功,欢迎陈晨 | 通过 |
| 0007 使用 001073 | 登录成功,欢迎许悦 | 通过 |
| 点击清空 | 两项输入为空并恢复提示 | 通过 |
| 取消后重新打开 | 输入为空并恢复提示 | 通过 |

图6 自动点击登录后的真实成功提示 密码已被清空
七次密码输入命令出现回读不一致的工具错误,但实际已输入,后续点击和提示读取验证了业务结果。因此是“九项业务检查通过”,并非“所有命令无错误”。过程中有人工确认和纠正。
6 复用前需要注意的边界
当前实现用非空姓名代表匹配成功,因此姓名留空时,即使账号密码匹配,也会显示失败。账号表缺失或没有数据时,查找函数返回空字符串,没有专门区分配置错误与登录失败。它也没有重复账号检查。这些是从代码可见的限制,并未在本次九项测试中逐项验证。
复用时应保证账号唯一、姓名完整,并补测缺表、重复账号、空姓名、账号首尾空格等边界。如需改变表头行号、工作表名或登录后行为,把变化直接告诉 WorkBuddy,再运行相应测试,不要只修改界面文字。
星号只是遮住屏幕上的密码,工作表里仍然是明文。隐藏工作表也不会把它变成可靠的安全认证。不要把真实业务密码直接放进这个教学文件;有真实权限或敏感数据保护需求时,需要另行设计安全方案。
下面的提示词可作为下一次练习的起点。它是整理后的可复用模板,不是本次首轮原文。
请使用vba相关技能 使用vba窗体完成以下任务。
帮我给这个Excel做一个登录窗口,从我准备好的账号表里读取账号、密码和姓名。密码显示星号,输错提醒,正确就显示欢迎和姓名。加上登录、清空和取消按钮,使用明亮的蓝白色。先给我看窗体设计,等我确认后再写代码。
代码完成后,请用VBAYYDS的uitest技能自动输入、点击按钮并检查结果。测试没填内容、输错密码、正确登录、清空和关闭后重新打开。告诉我哪些通过、哪些没测、哪些需要我确认,不要改动账号表里的数据。
这个案例可以复用的是协作方式:先说清楚需求,确认真实窗体,再让 AI 写代码和执行测试。生成的窗体和 VBA 代码都可以继续修改;测试结论及实际使用边界仍需由使用者核对。

