为什么人们仍然使用 VBA?

VBA 之所以持续存在,是因为在高度锁定的企业环境中,Excel 和其他 Microsoft Office 组件往往是许多员工实际上唯一被允许使用的可编程工具。评论者描述了非开发者“高级用户”如何自动化整份工作、为业务线工具做原型,以及用宏把各类系统粘合起来,尽管 VBA 年久、别扭且存在安全风险。更大的主题是,严格的 IT 政策与对快速、由终端用户驱动的自动化需求之间存在张力,而当前诸如 Office 加载项、云托管 Python 或 Web 应用等“现代”替代方案,常常无法在可访问性和集成度上与之匹敌。

内置、无处不在的工具

  • VBA 随 Office 一起捆绑提供(尤其是 Excel/Access/Word/Outlook),无需额外安装、审批或基础设施。
  • IDE、调试器和 GUI 窗体构建器都内置且稳定;宏可以先录制,再进行编辑。
  • 这种“就在 Excel/Word 里”的体验,与需要 IT 介入的插件、Web 应用或独立 IDE 形成对比。

企业锁死与影子 IT

  • 许多环境都被高度锁定:不能安装软件、不能用命令行、没有现代运行时,有时甚至连 USB 都被禁用。
  • 在这种地方,VBA(有时还有 PowerShell)字面上就是用户唯一能接触到的可编程环境。
  • 这催生了“影子 IT”:业务用户用 Excel/Access/VBA 搭建系统,因为走正式 IT 流程太慢、太贵,或者会被敷衍对待。

生产力、原型验证与“自动化了我的工作”

  • 有大量轶事讲到人们用 VBA 把数天的手工工作自动化到几分钟内完成。
  • 往往从一个快速宏开始,逐渐成长为关键任务工具(数千行代码),用于报表、交易、制造、物流等场景。
  • 有些人把这些系统视为危险的拼凑物;另一些人则把它们看作有价值的活体原型,以及业务价值的证明,之后 IT 也许可以把它们工业化。

语言与 IDE:优点与缺点

  • 受到称赞的点:语法简单、易上手;与 Office 对象模型紧密集成;调试器不错;支持窗体;可访问 COM/Win32;速度足够快。
  • 受到批评的点:古老、怪异的语义;模块化差;缺少现代特性(泛型、lambda);On Error Resume Next;本地化陷阱;难以进行版本控制和测试。

替代方案与继任者

  • 讨论了 PowerShell、Python、JS、Office Scripts、OfficeJS 加载项、VSTO、RPA 工具、Jupyter 等。
  • 障碍包括:需要安装、服务器、许可证、云端执行(数据泄露担忧)、Office 集成有限、没有文档内编辑器,或部署受限。
  • 较新的选项(Excel 中的 Python、Office Scripts、OfficeJS)被认为很有前景,但目前仍然过于受限、过度依赖云端,或难以分发。

安全问题

  • 宏长期以来一直是主要恶意软件载体;一些组织现在已完全禁用它们。
  • 其他组织做不到,因为太多工作流依赖它们;安全缓解措施只是部分且不均衡。

组织动态

  • 反复出现的主题是:IT/安全团队优化的是控制和规避风险,而业务用户优化的是把事情做完。
  • VBA 之所以持续存在,是因为它处在“已安装”“足够强大”“未被阻止”的交汇点上,使得当正式 IT 流程无法或不愿介入时,最终用户计算仍然可以发生。