本章要回答的三个问题:哪些重复劳动可以让系统自己干,从哪一档工具下手?VBA 这门"老语言"该怎么入门,它和 Excel 里那个 VBA 是什么关系?保存一张订单时想让系统自动扣库存、发提醒——事件驱动的代码到底怎么写?
第 4 章验收后的第一次月度复盘会上,华彩团队列了一张 wish 清单:希望保存订单时系统自己检查库存够不够;希望低库存货品每天早上自动生成提醒;希望维修单完工后自动通知采购归档;希望按业务员生成提成报表不再手工选择月份。清单上的每一项,界面点选都做不到——它们需要逻辑。
这就到了 Access 的第三层(回顾 1.1 的三层结构):自动化。这一层有两件武器,定位截然不同:
宏是积木式的无代码自动化。你从一个下拉动作列表里挑指令(打开窗体、刷新数据、弹消息、跑查询),填几个参数,积木就搭好了。优点是不用学语法、坏不了大事;天花板也很明显——它擅长"做一系列固定动作",不擅长"看情况办事"。
VBA(Visual Basic for Applications)是全功能的编程语言,Office 全家桶共用一门。当你的需求出现"如果……那么……""对每一条记录……""等用户确认后再……"这类句式时,就该请它出场了。第 5 章到第 8 章的几乎所有进阶能力——数据访问、错误处理、对接外部组件——全部由 VBA 承载。
两者的分工纪律先立在这:能宏则宏,宏穷则码。 每一段宏都是可视化、可审计、不惧改动的资产;代码是重武器,只在逻辑真正复杂时投入。这个原则会让你的系统始终保持"半个懂行的人也能维护"的状态。
| 节号 | 回答哪个问题 | 关键产出 |
|---|---|---|
| 5.1 宏 | 不写代码能自动化到什么程度 | 宏的动作地图与安全边界 |
| 5.2 VBA 编程基础 | 第一次写代码该练哪些块 | 一套最小但完整的语法骨架 |
| 5.3 数据访问与事件 | 代码怎么读写表、挂在哪 | Recordset 操作与事件挂钩规范 |
| 5.4 SQL 携手 VBA | 动态查询怎么做才优雅 | 四种组合拳模板与排错习惯 |
注意学习顺序不可倒置:宏建立的"动作 - 参数"心智会让你学 VBA 时事半功倍,因为很多 VBA 方法就是宏动作的程序版。学完本章还有一个立竿见影的副产品:你会获得一套阅读别人系统的解码器——看到控件、双击事件属性表里的嵌入宏或事件过程,一个陌生系统改装的逻辑就摊开在你面前了。
自动化做完,单个系统的功能已经完整。第 6 章视野向外:数据怎么从别的系统流进来(Excel、文本、SharePoint),又怎么流出去喂给 Word、Outlook、Power BI——Access 作为办公室数据枢纽的真价值在那里展开。
进本章前的最后一次自检:你能不能说清一个按钮从被点击到数据落库之间发生了哪几步?说不全也没关系,这正是接下来四节要逐层拆开的黑箱——宏讲动作怎么排、VBA 讲逻辑怎么写、DAO 讲数据怎么碰、SQL 讲弹药怎么供,四层拆完这只黑箱对你再无秘密。唯一的前置提醒是调整预期:本章的目标不是把你练成程序员,而是让你在业务现场遇到"软件不会做的事"时,有胆量自己动手补上那一块。