我说VBA过气了,相信会有很多人会开始对我口诛笔伐。VBA曾经确实辉煌过,要知道十几年前就连AutoCAD、CorelDRAW也一度非常支持VBA宏,后来AutoCAD回归到了Lisp的怀抱中,CorelDRAW也认清了要平面设计师写宏命令是一个非常不切实际的奢望。
VBA的老大哥VB已死,而小弟SmallBasic只能堪当玩具肩负教育的责任,从SmallBasic首页奇葩“SB”字样的乌龟人标识就可以看出它注定不能成为一个生产工具。
OfficeScripts才是微软所看好的未来,而VBA仅允许苟活。在OfficeScripts还没有支持桌面版的Excel的情况下,放弃VBA直接改用Python无疑是更好的选择,学成之后还能从一个会写宏命令的屌丝摇身一变成为一个“大数据工程师”。
VBA在Excel里的作用
VBA是一种宏,但宏未必就一定是VBA。宏源于“marco”,是一种批处理的称谓,指将小命令、动作转换为一系列的指令。VBA可以减少Excel很多重复性的工作,让Excel简易化、自动化、智能化,这样Excel就可以完成它自身功能无法完成的复杂的任务。
VBA是基于VisualBasic(VB)发展而来,VBA是VB的子集,所以它们具有相似的语言结构。VBA的出现主要是用来扩展Windows自带软件的功能,特别是Office软件。年集成了VBA宏命令的Excel5.0发布之后,Office起飞了,可以说Office之所以能够占据这么大市场份额很大一部分原因在于VBA,有了VBA之后Office能做的事情就多得多了,对于很多使用Word、PowerPoint、Excel的人来说,掌握了VBA就可以让复杂的工作变得简单,也可以减少很多不必要的重复性工作,大大提高工作的效率,所以就有人很形象的将VBA比作Excel的“遥控器”。
在互联网时代到来之前VB依靠着“所见即所得”的开发环境成为了一款巅峰时期拥有万开发者的热门桌面开发工具,和Windows的强强联合使得VB很长一段时间都对竞争对手保持压制的态势。但互联网时代到来Java等语言开始兴起,VB的优势逐渐丧失,于是微软推出了.NET并发布了.NET版的VB、C#,C#逐渐取代VB,导致最后很难找到VB源码示例。最终微软在年宣布VB终结的命运,既然老大哥倒下了,可想而知VBA的命运也不会好到哪里去,在程序员的鄙视链中“汇编CC++PythonJava、C#、PHPVBHTML”甚至都找到VBA的身影。
Python为什么比VBA香?
VBA在过去确实很香,有特有的录制宏功能,可以和Office完美的结合,拥有完整集成的开发环境,语法成熟固定没有开源语言的升级烦恼,另外它也没有碰到过强大的竞争对手。但有了Python、C#、Java做对比之后就发现VBA的语法功能单一、代码量大,可扩展性很长。尤其是涉及到操作Excel外的对象,就需要写非常多的代码了。
Excel使用Python之后可以享用Python生态系统下面的一切工具,尤其是数据处理这块。比如可以用Pandas数据套件来处理Excel,可以在任何你喜欢的编辑器里写Python脚本,记事本都行,这样我们就再不用碰陈年难搞的VBA编辑器。
Python的宏脚本可以版控、集中整理,而不会随着Excel文档散落在其他地方,Python脚本还可以透过xlwings调用Excel公式。
总结
VBA到如今依然算是办公利器,也依然有很多人在使用VBA。VBA确实过气了,Python确实是比VBA要强大太多,效率也更高一些。但有句古话“杀鸡焉用牛刀”,仅仅如果只有几千行数据,还要搭个Python环境就显得有些过了。