VBA已经过时了吗?

VBA已经过时了吗?

虽然VBA不是高校里面的正式课程,但我十几年来一直都在向经管社科方向的同学推荐和介绍这个很实用的技术,所以也经常遇到同学询问类似的问题。这里引用我以前发过的一篇博文,希望对题主能有些启发:

“VBA已经过时了吗?VBA是不是很快就要被淘汰了?” 这是任何一个初学计算机技术的同学都会关心的问题,杨老师在讲授其他课程比如Java设计方法、关系型数据库、网络通信技术等课程中,也一样会听到同学们问同样的问题。

其实这个问题很有意思。如果你经常浏览程序员们的网站,特别是中文论坛,你就会发现“XX技术是不是过时了?”、“论XX语言不如XX语言”之类的话题永远层出不穷,而且总能引起一大片激烈的争论。比如用C语言的说Java太慢,用Java的说C++太乱,C++的说有本事你也给我写个游戏引擎,结果搞汇编的跳出来说;你也好意思在我面前提“性能”;接下来搞Python的、Ruby的纷纷表示自己才是新一代发展方向,不过玩JS的说我才是函数式编程,结果再被大家一顿鄙视…… 看这些帖子时候的感觉,就跟看郭德纲师徒斗嘴一样,会觉得原来程序界也是山头林立、门派纷争,谁都想给自己争个“道传正统”的法旗

总之这些争论永远存在,但其实都没有任何实际意义,最后也都是不了了之。道理很简单:工具技术各有特色,适用于不同场合,没有任何一种技术可以自称是“万灵丹”。所以互相之间无所谓优劣,只有适用性的不同。

不过话说回来,凡是技术终归要有被淘汰的一天。确实有很多当年我们接触过的语言和工具,现在除了遗留系统外,已经很少看到踪迹了,比如 COBOL,PowerBuilder,C++Builder等等。所有技术都如此,VBA当然也概莫能外。事实上,我记得2012年前后,确实曾经风传微软将停止支持VBA,不过随着新版OFFICE推出,该谣言也不攻自破。

不过我觉得大家倒不必为此担忧,因为:

首先,对于非计算机专业的白领人士,直到目前,Office软件中没有比VBA更强大又好学的编程工具。所以只要你想玩转Office,就只能学习VBA。客观地说,开发Office的更加专业的工具还有很多,比如用.Net开发工具直接开发Office插件,无论外观还是性能都超出VBA一个档次。不过这些工具都是供给专业人员使用的,如果你也能掌握这个技术,那么已经可以直接改行做专业开发人员了。

其次,退一万步讲,即使下一版Office中停止支持VBA,那么微软也必须提供一个替代性的宏开发工具。而既然是宏编程,又是VBA的继承者,那么大家现在掌握的VBA知识将会使你非常顺利的切换到新语言环境,无非就是For/If等保留字的写法发生变化,或者稍微增加一些新的语言结构(比如强面向对象)而已,本质上都是相通的。比如我前几天帮朋友开发时使用了一下Google Doc(Google提供的完全类似MS Office的云端办公软件)的宏语言,它基于Javascript语法,但是写起来的手感跟VBA是一样的,无非还是传统的程序代码配上各种表格对象的使用。如果熟悉VBA,完全可以一边上网查文档,一边就把程序写出来。

最后,我还是一贯的观点:工具万千,实用为王。不必把自己拘泥于某一个技术上,而是根据工作需要,什么方便用什么。能用公式就用公式;公式不给力就上透视图,实在没办法就来VBA;VBA也不能用,又必须要求写程序,那就熬几个夜学学C#,然后上网抄一段代码改一改,反正大家思路上都差不多;如果还是不行,那就请领导批预算委外开发;如果领导不批准还要出活,那就辞职吧 ……

说跑题了。总之我个人的意见是:在可以预见的几年里,VBA不会被替代;即使有一天VBA会被替代,你通过学习VBA所积累的经验也会帮助你迅速转到新工具中。