Python vs VBA,操作Excel哪家强?—— 答案:搁置争议、共同开发
Python:“咱是时代萌新、语法先进,工具丰富、天生网红。” VBA:“切!俺是官方正统、稳定支持,Office从白垩纪开始就是俺家地盘!”
Python通过xlwings这个很流行的第三方模块实现基本的Excel读写功能
python excelVBA毕竟是上一代语言,而且20多年没有变化,语言特性与Python等最新工具相比已经不够先进。例如在处理集合类型的数据时,VBA里面的数组、字典、集合等数据结构,怎样看都不如Python中相应类型的功能强大。而且Python的各种语法糖用起来比VBA语法简洁灵活得多,还可以随时使用数据分析、人工智能等各种第三方工具库,用起来真是不要太清爽。
但是先进性的缺失也恰恰引出另一个视角——为什么在新技术层出不穷、竞争激烈的今天,VBA这个“老古董”至今还能活跃在各行各业,以至于微软多少次想换掉它却又无可奈何?
(一) 历史遗留程序
答案很简单——各级用户依然对VBA有着独特的、暂时难以替代的需求。由于VBA推出时就完全面向非IT专业的用户,这些公司多年积累下来的财务模型、管理流程、技术经验无以计数
(二) 微软官方指定的Office内置功能
与Python等其他工具相比,VBA 在Office二次开发方面也确实有其独到的优势,只要电脑有Office就可以使用,无需像Python那样单独安装一个开发环境(以及xwing等额外的模块),特别适用于内网管控的办公环境
(三)对内部对象调用最直接方便
对Office内部对象的支持是最方便也最可靠的。当然,Python等开发工具可以通过COM接口等方式同样调取Office对象,但毕竟是从外部调取Office,而VBA则是在Office内部工作,更加方便
(四)无需依赖运行环境直接打包分发
可以随Office文件(docm、xlsm等)直接分发给别人使用。而使用Python等,则不仅要发送一个office文件,还要发送一个程序文件。假如别人的电脑上没有安装过Python运行环境,那么还需要把程序达成一个可执行包再发送,不仅麻烦,而且文件体积往往比较大。
适用场景
如果日常有大量工作严重依赖于Excel、Word 等 Office 工具,并且企业中禁止安装Python等专业开发工具,那么VBA仍然是最好的选择。而如果已经熟悉 Python,办公环境中又可以使用Python、不需要让自己的程序随Office文件同时发布,那么仅用Python就已足够。
交叉使用
xlwings等工具既允许我们在Python中调用VBA,也允许我们在VBA中调用Python(这一点需要在Excel中安装插件
网友评论