VBA和Python都可以处理Excel,VBA和Python各有什么优势?

有传言说,微软会使用Python来替代VBA处理Excel,真的会替代么?

对于这个问题,熟悉本人风格的同学一定能猜出来我的立场——“技术无高低,一切看需求”。客观的说,VBA毕竟是上一代语言,而且20多年没有变化,语言特性与Python等最新工具相比已经不够先进。例如在处理集合类型的数据时,VBA里面的数组、字典、集合等数据结构,怎样看都不如Python中相应类型的功能强大。而且Python的各种语法糖用起来比VBA语法简洁灵活得多,还可以随时使用数据分析、人工智能等各种第三方工具库,用起来真是不要太清爽。

但是先进性的缺失也恰恰引出另一个视角——为什么在新技术层出不穷、竞争激烈的今天,VBA这个“老古董”至今还能活跃在各行各业,以至于微软多少次想换掉它却又无可奈何?

Python:“咱是时代萌新、语法先进,工具丰富、天生网红。” VBA:“切!俺是官方正统、稳定支持,Office从白垩纪开始就是俺家地盘!”

答案很简单——各级用户依然对VBA有着独特的、暂时难以替代的需求。由于VBA推出时就完全面向非IT专业的用户(例如财会金融、企业管理、医疗科研等),并且紧紧依存在Office系列软件中,所以几十年来已经在各类企业(特别是财金行业)积累了大量人气,并留下了无法计数的小程序。对于仍然使用这些程序(VBA宏)的企业来说,VBA语言的性能是否强劲、语法是否现代都不重要,唯一重要的是——这些程序里容纳的是公司多少年积累下来的财务模型、管理流程、技术经验。

比如多数财金公司里面的Excel模型都是当年使用VBA写的,虽然水平参差不齐但却是企业的核心资产。所以只要它们能够正确运行,就完全满足了用户的期望,而不到万不得已,没有人会愿意花大价钱把这些模型用其他语言重新开发一遍。这也就是为什么时至今日,会计审计、数据分析等岗位在招聘时依然希望应聘者掌握一些VBA技术,以便能够继续维护和完善这些模型,就像下面这位同学在Q群中提供的信息:

除了处理“历史遗留程序”之外,与Python等其他工具相比,VBA 在Office二次开发方面也确实有其独到的优势。原因主要在于,它是微软公司官方指定的Office内置功能。

首先,内置功能意味着对于非计算机专业的人士来说,只要电脑上有Office基本就可以直接使用VBA,无需像Python那样单独安装一个开发环境(以及xwing等额外的模块)。不要小瞧这一点,因为很多正规企业里都会严格限制员工在电脑上安装软件的权限,我在银行工作时尽管岗位与IT有关,但因为不是开发岗,电脑上也禁止安装一切开发工具,所以只能使用VBA和PowerShell(有些内控更严格的公司或事务所连VBA也禁止使用)。

内置功能的第二个好处是,它对Office内部对象的支持是最方便也最可靠的。当然,Python等开发工具可以通过COM接口等方式同样调取Office对象,但毕竟是从外部调取Office,而VBA则是在Office内部工作,更加方便。比如,商业办公中经常需要把复杂的操作先手工录制为宏,然后再编程改造为自动化。而Office录制的宏全是VBA代码,如果是使用VBA开发,可以直接引用,无需再人工翻译成Python代码。

内置功能的第三个好处,是它可以随Office文件(docm、xlsm等)直接分发给别人使用。而使用Python等,则不仅要发送一个office文件,还要发送一个程序文件。假如别人的电脑上没有安装过Python运行环境,那么还需要把程序达成一个可执行包再发送,不仅麻烦,而且文件体积往往比较大。

此外,VBA是专门为调用Office功能而设计,所以对于只懂Office不懂程序设计的人士,学起来更加直接。初学者只需学会sub/endsub、cells 这三个关键字就能用程序控制Excel。相比之下,python是一个通用意义上的开发工具,操作Office只是它的功能之一。所以初学者需要了解更多知识(模块导入、类与对象、文件读写等)才能开始Office编程,上手难度稍微高了一点。

所以总结一下,我们的观点是:如果日常有大量工作严重依赖于Excel、Word 等 Office 工具,并且企业中禁止安装Python等专业开发工具,那么VBA仍然是最好的选择。而如果已经熟悉 Python,办公环境中又可以使用Python、不需要让自己的程序随Office文件同时发布,那么仅用Python就已足够(我有很多数据科学家朋友就只用Python操作Excel、不懂VBA)。

不过只要时间和精力允许、二者都能学习一点,那么充分结合二者优势当然会实现最灵活强大的功能。因为就像本节课程中演示的,xlwings等工具既允许我们在Python中调用VBA,也允许我们在VBA中调用Python(这一点需要在Excel中安装插件,所以留待实战篇再讲解)!所以当面对高级、复杂的需求时,我们完全可以针对不同功能分别使用VBA和Python编写不同程序,再通过互相调用实现完美的效果。

因此从我们的角度看,单纯讨论二者谁强谁弱并没有意义。只要我们能够理解二者各自的长项和不足,就能针对每一项任务找出最合适的方案。这也就是本文标题中引用 “搁置争议、共同开发”的含义所在。

所以你们是怎么觉得的呢?评论留下你们的答案!

最后小编还会赠送一份python大礼包送给大家【加君羊:419693945】帮助大家更好的学习!

VBA 会被 Python 代替吗?相关推荐

  1. vba里使用python自定义函数(xlwings)

    http://club.excelhome.net/thread-1452827-1-1.html 今天讲一下怎么在vba里面使用python的自定义函数.在vba板块提下python主要是pytho ...

  2. 处理excel,该选择VBA,还是python?

    作为表格软件的先驱,Excel可以说给我们的日常办公,做出了不可磨灭的贡献.随着excel功能的扩大,VBA.python等各类编程语言,开始被应用于excel当中. 于是乎,关于处理excel,该选 ...

  3. 替代VBA!用Python轻松实现Excel编程(文末赠书)

    大家好,我是小z,也可以叫我阿粥~ 面向Excel数据处理自动化的脚本编程,目前主要有VBA和Python两种语言可供选择. 从上世纪90年代到目前,VBA一直是Excel脚本编程的主要工具.VBA语 ...

  4. python打开excel执行vba代码_“Python替代Excel Vba”系列(终):vba中调用Python

    请关注本号,后续会有更多相关教程. 系列文章 学Python还不会处理Excel数据?带你用pandas玩转各种数据处理"Python替代Excel Vba"系列(二):panda ...

  5. vba调用python代码_Python替代Excel Vba系列(终):vba中调用Python

    点击上方"数据大宇宙",设为星标,干货资料,第一时间送到! 系列文章 前言 有小伙伴向我反映到,本系列前面的章节主要还是在讲 pandas ,几乎与 xlwings 没有啥关系. ...

  6. 再见 VBA!神器工具统一 Excel 和 Python

    作者 | 东哥起飞 来源 | Python数据科学 经常给大家推荐好用的数据分析工具,也收到了铁子们的各种好评.这次也不例外,我要再推荐一个,而且是个爆款神器. Excel和Jupyter Noteb ...

  7. excel有必要用python_为什么Python比VBA更适合自动化处理Excel数据?

    每当有人发布关于 python 处理 Excel 数据的文章,总会有人只看了标题就评论: "vba处理已经足够,完全没必要使用python". "我工作环境不能安装,因此 ...

  8. python能代替vba吗_VBA会被Python代替吗?

    最近内测版Excel中的vlookup函数被xlookup函数代替了,但vlookup函数依然得到了保留.类似的,对于生产力工具Office套件而言,保证兼容性是重要的,Office诞生以来出现的所有 ...

  9. 零售分析用vba还是python_数据分析?Excel、VBA和Python?营销套路还是大势所趋!...

    "添加关注,方便我们每天向您推送精彩资讯. 扫码申请加Excel微信群 交流心得 解决问题 验证信息:Excel 不懂业务的数据分析都是耍流氓-- 可是只懂业务却不会使用工具的话,效率低下只 ...

最新文章

  1. phonegap 2.7 ios配置安装详细教程(2.9通用)
  2. linux 崩溃文件 coredump 简介
  3. Android7.1选择时区由默认的GMT+00:00改为GMT+08:00中国标准时间
  4. php ci框架 模板输出,CI框架中使用通用模板引擎smarty
  5. luogu P3293 [SCOI2016]美味
  6. leetcode 1339. Maximum Product of Splitted Binary Tree | 1339. 分裂二叉树的最大乘积(树形dp)
  7. 说两句电视剧《东归英雄》
  8. 用Python写网络爬虫pdf
  9. C++基础——非类型模板参数
  10. 将Rosbag中的Compressed类型的图像转换成raw类型
  11. php session gc_maxlifetime,PHPsession 有效期 session.gc_maxlifetime
  12. ld.so.conf.d配置文件
  13. win7查看计算机设置密码,如何查看win7电脑开机密码_win7专业版电脑开机密码怎么查看...
  14. Windows XP的图标结构
  15. 如果你会了sass,你就会了ECMAScript6
  16. Elasticsearch:sniffing 的最佳实践:What, when, why, how
  17. 相似图像识别算法是什么,机器图像识别常用算法
  18. 二、互联网思维之用户思维
  19. 第五章总结(创建与使用视图)
  20. python国内源下载地址亲测有效

热门文章

  1. 【通信原理】PC上调试MODBUS基本功能(附报文解析)
  2. 利用计算机进行数值模拟计算,数值模拟法
  3. 微软仍计划在2017年发布两次Windows 10系统升级
  4. Apache SkyWalking入门学习笔记
  5. Tensorflow创建循环神经网络
  6. 设计模式之状态模式详解(State Pattern)
  7. PS(PhotoShop)替换纯色图片的颜色
  8. matlab 色温图,什么是色温?色温的定义及色温图
  9. 【海南赛区】​2022高教社杯全国大学生数学建模竞赛获奖人员名单公示
  10. 面板显示技术:LCD与OLED