1、VBA:
    VBA是Office系列自带的宏语言,与Python、VSTO和RPA最大的优势就是不需要单独安装IDE(集成开发环境),可以直接在Excel中编写。VBA比较适合非IT专业的人员入门编程,除了不需要单独装IDE以外,VBA在调试的过程中是可以一边调试一边修改代码的,虽然只能改断点之后的代码,但是在日常学习中也已经比较方便了。借助Excel工作簿,用VBA可以做到所见及所得,每一步操作都能呈现出来,对于不会的操作还可以录制宏抄代码。当然稍微熟悉了之后,我还是建议尽快学会用数组,比直接操作Excel快很多,也更专业一些。
    可能有的人也觉得VBA比较适合把Excel日常重复的操作一键化,关于这一点我不太认可。如果只是自己用的话,用Python开发会快很多,如果要分享给同事,把Python打包成exe也不是很难。或者应该一步到位用VSTO。
    当然我也理解有的人学完VBA之后觉得够用了,所以又把工作重心移回专业知识方面,没有再深入学习其他技术。VBA写插件够用吗?够用了。适合吗?不适合!
    2、Python
    Python是目前炒的最火的编程语言了,真的是火出圈。相比VBA,Python需要配置环境、装IDE。对于非专业人士可能改个pip源都费劲。我觉得可能还是思维方面的差异吧,多练习就可以了。
    Python的优势是类库比较丰富,语法很简洁。例如数据处理中常用的Pandas库,用dataframe数据结构处理数据就一个字——“爽”。用Pandas基本就可以告别For循环了。(以至于我用了一周Python再回去用C#写VSTO时一度怀疑人生——为什么C#没有dataframe这种结构?)
    Python适合做什么?Python能做的有很多,工作中对数据的处理,都可以脱离Excel用Python来做。基本上除了Excel插件之外,都可以用Python来处理。
    如果你要给同事写插件,写个Python程序是不大合适的,除去写运算逻辑,可能还得画窗体,最后打包成exe发给同事,然后运算完还要重新打开Excel。这是一种比较割裂的使用体验。
    3、VSTO
    VSTO是微软做出来替代VBA的,这才是2020年Excel插件的正确打开方式。有着宇宙最强IDE的Visual Studio的加持,开发体验也很舒服。
    VSTO支持VB和C#两种语言,我个人是从VBA直接到C#,也推荐想学习的直接跳过VB。
    VSTO就是为了做Office插件而生的,包括自定义Excel模版也是它的强项,而且部分语法也与VBA比较类似,也可以参考录制宏文件。如果学完VBA的话,稍微加把劲儿把VSTO也学一学,还是很香的。
    VSTO可以采用ClickOnce方式部署,更新很方便,连接数据库的话直接nuget安装包,使用体验直接上了一个档次。
    VSTO比VBA的劣势主要在三点:1.对旧版本Office支持不好,不支持Office2007以前的版本。2.需要.net framework环境。这两个问题在我看来完全不是问题,都2020年了,如果还在用Office2007以前的版本,那我真是无Fuck说,而.net环境基本上正常的系统都不会缺,即使缺的话也可以在安装插件的时候下载安装。第三点是网上的资源比较少,可能大多数人都止步于VBA了,毕竟又不是不能用。
    4、RPA
    很多人可能没有听过VSTO,就更没有听过RPA了。RPA也是一种自动化的方式,之前我也体验了一下Uibot这个软件(来也科技请打钱 ),说是可以不用编程就做到自动化,但实际上有VB编程基础的话用起来还是有优势。免费的社区版也有小bug,付费的我没试过。
    除了Uibot之外还有个UiPath,UiPath是国外做的最好的RPA软件,如果你英语好的话可以尝试体验。
    Uibot的优势是可以不用学编程就做到办公自动化,使用体验还OK。用这个软件是因为集团上报预算,要在自定义面板中操作,而上报预算的细节设计也比较智障,报个预算得复制粘贴点几百次,用Uibot设置好就可以看电脑自己操作了。
    会用Uibot之后我就回想起去年在某集团做竣工决算的项目,帮企业填固定资产系统,大几百个项目,几个人傻呵呵地一个一个在网页上点,如果当时知道用Uibot可以省很多事。
    Uibot需要单独安装,400多兆,也还好。另外对高分辨率支持有点问题,这也不是啥问题,毕竟能去用RPA的也没几个人能关注自己的显示器配置。
    用RPA软件跟Python一样使用体验有点割裂,要部署的话也得单独部署一套RPA的系统,整个自动化都是依靠这套RPA系统运行的,当然,要给钱,免费的社区版只能自己用。

    总结:
    VBA的优势在于自带IDE,可以直接使用;
    Python的优势在于语法简洁,适合数据处理;
    VSTO适合做Excel插件,也就是所谓的二次开发。
    RPA比较适合来不及学编程想快速上手的,比VBA擅长跨软件操作。
    我当时是先学的VBA,因为觉得京都底稿不够好用,想按照自己的方式重构。后来继续深入学了C#做VSTO,最后为了转行才学了Python,目前工作中这三个都用。