微软的Office全家桶毫无疑问是目前为止办公领域应用最为广泛的软件,同时也是职场人最为熟悉的“武器”,因此也使得Office的“风吹草动”也受到了外界的众多关注。而此前在今年年初,Offce生态迎来了一次巨大的变化,当时微软方面宣布为了打击勒索软件及其他恶意软件,将默认禁止Office从外部获取的VBA宏。
彼时微软方面表示,这一变化将适用于从互联网上下载并包含VBA宏的Office文件,其中包括Access、Excel、PowerPoint、Visio和Word五款软件,并会自6月开始向Microsoft Office2013以上版本的所有用户推出。在启用VBA宏自动屏蔽的Office版本上,用户会看到“微软已阻止宏运行,因为此文件的来源不受信任”的安全警告。
但就在半年后,微软却“后悔”了。日前微软方面表示,根据用户反馈、将取消这一改动,不再禁用Office的VBA宏。
要知道当初宣布将默认禁止VBA宏时,微软首席项目经理Kellie Eickmeyer是这样说的,用户只要点击一个按钮就能执行宏,黑客则经常会发送内置宏的Office文件给用户,而在不经意激活宏后,系统就会被加载各种恶意内容。
其实,VBA也就是Visual Basic for Applications,是微软方面在1993年基于可视化程序设计语言Visual Basic打造的宏语言。但VBA与传统的宏语言不同,传统的宏语言不具备高级语言的特征,没有面向对象的程序设计概念和方法,而VBA则提供了面向对象的程序设计方法,并提供了完整的程序设计语言机制。
一直以来,在程序员社区里关于编程语言谁更优秀的争论,就从未没有停止过,诸如“PHP是最好的编程语言”、“千年的编程,万年的C”这类也十分常见,不过要说到最不受程序员欢迎的编程语言,则或许莫过于微软的VisualBasic。没错,无论是被吐槽为难以阅读、维护的Perl,还是功能丰富到混乱的C ,都没有VisualBasic更让程序员反感。而在1998年微软方面不再为VisualBasic提供正式支持后,VBA就取代了VB,成为当下程序员最讨厌的编程语言了。
程序员们讨厌VBA是因为它太简单,你没看错,VBA的使用门槛低正是它被厌恶的原因。VBA作为VB的子集,延续了后者“所见即所得”的开发环境,同时,VBA采用了解释机制,而且提供了强大的逐句解释功能,所以运行时不需要编译和链接。这意味着,不需要经过专业化的计算机科学学习,只有一定的逻辑思维能力和对编程有一些认识,几天之后就能写出一个像模像样的VBA程序。
不需要高深的编程知识和专业的程序员,每个人都可以写VBA代码,这在上世纪90年代到本世纪初无疑是一个非常有吸引力的特质。然而,这也代表了一直到今天为止,许多公司使用的VBA程序依然是由二三十年前的非程序员写的。在今天的程序员来说,VBA这种非现代编程语言自然是备受嫌弃了。
更为重要的是,VBA的安全性也很糟糕。所谓“宏”,指的是用户对规则或模式进行预定义的一系列具体操作,VBA宏的特质就是开启后,会高效地进行大批量处理程序编写者预先定义的命令,即便VBA宏包含宏病毒等恶意程序也会自动执行。为了避免这类情况,微软在Office套件的安全级别选项卡中,就提供了宏安全性的设置。
但问题是,由于微软的设计导致了如果宏安全性太高,就会无法运行VBA代码。通常,网络中的各种教程都会推荐用户将宏安全性设置为“中”或者“低”,而不是“高”和“非常高”。但用户如果为了方便而降低安全性,就给了宏病毒一展身手的机会。尽管对此微软方面并非无动于衷,也提供了查毒器来为用户提供检查VBA宏是否安全,但由于Office用户的特质,就决定了这一努力几乎是无谓的。
最终,微软选择了直接禁用VBA宏这样一刀切的做法。然而VBA宏能够经历二十余年技术迭代的洗礼,靠的就是自身是Office生态中实现办公自动化的唯一工具。VBA宏可以减少Office中很多重复性的工作,甚至于完成Office自身功能无法实现的复杂任务。比如批量排版Word/PPT文件、从Word文档中抽取关键信息、实现自动批量打印、抓取网页数据,以及对接外部数据库等等。
当然,想要实现办公自动化,VBA确实并非唯一的选择,几年前就曾刮过一阵用Python取代VBA的“风”,但最终VBA也没能被取代。Python的语法、对诸多接口的支持,使得其编码和性能都独树一帜,但Python需要配置开发环境、且需要更高阶的计算机编程知识,就决定了它较高的门槛,而VBA的低门槛和易用性则更满足绝大多数商业公司的需要。
所以在Office中没有比VBA更强大、又易学的编程语言,也没有比VBA宏更加简单高效工具的情况下,这就是Office用户一致反对微软此举的关键所在了。