pythonvba区别_VBA和Python该学哪个?
相信不少想继续深⼊学习的重度Excel⽤户都会产⽣这个疑问。
如果你继续学习是为了寻下⼀份⼯作的话,应该去招聘⽹站⼯作岗位的⼯作描述,看看哪个⽤的⽐较多,然后继续学习,如果你只是为了提升⼯作效率,给⾃⼰点技能树的话,可以继续往下看。
最近看了⼏个的简历,这⾥也说⼀下,我是财务转数据分析的,但是我不建议⼤家都这么头铁。当时⾯试的时候,⼈⼒举例说别的岗位⼀周可能收70份简历,数据分析⼀周就能收700份甚⾄⼀千多份。如果你不是特别优秀,转⾏基本只能从基础岗位做起,如果你30岁以上,基础岗位基本没有⾯试机会。
我这个⼈有点强迫症,也有点⼉代码洁癖,⽤⼯具软件就⼀定要⽤最专业的,这样学起来资料⽐较丰富,也感觉⾃⼰⽐较专业。下⾯也从这个⾓度简单介绍⼀下VBA、Python、VSTO和RPA的优缺点,以及他们最适合⼲什么。
1、VBA:
VBA是Office系列⾃带的宏语⾔,与Python、VSTO和RPA最⼤的优势就是不需要单独安装IDE(集成开发环境),可以直接在Excel中编写。
VBA⽐较适合⼀些不能⾃⾏在电脑上安装软件的⽼国企,因为不能⾃⼰装软件,所以没得选。
VBA也⽐较适合⾮IT专业的⼈员⼊门编程,除了不需要单独装IDE以外,VBA在调试的过程中是可以⼀边调试⼀边修改代码的,虽然只能改断点之后的代码,但是在⽇常学习中也已经⽐较⽅便了。借助Excel⼯作簿,⽤VBA可以做到所见及所得,每⼀步操作都能呈现出来,对于不会的操作还可以录制宏抄代码。当然稍微熟悉了之后,我还是建议尽快学会⽤数组,⽐直接操作Excel快很多,也更专业⼀些。
可能有的⼈也觉得VBA⽐较适合把Excel⽇常重复的操作⼀键化,关于这⼀点我不太认可。如果只是⾃⼰⽤的话,⽤Python开发会快很多,如果要分享给同事,把Python打包成exe也不是很难。或者应该⼀步到位⽤VSTO。
当然我也理解有的⼈学完VBA之后觉得够⽤了,所以⼜把⼯作重⼼移回专业知识⽅⾯,没有再深⼊学习其他技术。VBA写插件够⽤吗?够⽤了。适合吗?不适合!
我们公司有⼤量遗留下来的VBA插件,跟知乎某个回答⼀样,写插件的⼈升职加薪去集团了,留下了⼀堆插件,这些插件有⽤吗?真的有⽤。怎么维护?VBA插件还考虑维护?都搞不清楚遗留了多少⽂件,好像整个部门各个岗位都有。如今要把各个岗位的数据上数据库,这些VBA插件每⼀个都躲不过去。
VBA最⼤的问题是IDE。但凡⽤过现代版的IDE软件,你再回去写VBA试试。那个编程体验简直是让⼈
绝望:只要⼀⾏没写完,点击其他⾏就弹窗提⽰;没有代码⾼亮;缺少代码提⽰。上周我改同事的VBA代码,直接复制粘贴到VSCode改完再粘回去调试。
VBA第⼆⼤问题是安装和引⽤稍微有点⿇烦。安装的时候需要在Excel中⼿动引⼊加载项,更新也需要⾃⼰去⼿写更新⽂件。引⽤别的功能基本是个残废,例如数据库需要单独安装ODBC驱动。写⼀个程序给别⼈⽤,最起码的应该是减少使⽤成本。Excel加载项可能还好⼀点,步骤稍微多⼀些,也不是很复杂。Word加载项就⽐较糟⼼了,启⽤的加载项必须放到默认路径,或者调整默认路径,否则每次打开都得重
新启⽤。
2、Python
Python是⽬前炒的最⽕的编程语⾔了,真的是⽕出圈。相信想学Python的⼈⼀定在朋友圈看到过相关的⼴告,什么Excel两⼩时Python只
要5分钟、学完Python再也不加班了之类的。
相⽐VBA,Python需要配置环境、装IDE。对于⾮专业⼈⼠可能改个pip源都费劲。我觉得可能还是思维⽅⾯的差异吧,多练习就可以了。
Python的优势是类库⽐较丰富,语法很简洁。例如数据处理中常⽤的Pandas库,⽤dataframe数据结构处理数据就⼀个字——“爽”。⽤Pandas基本就可以告别For循环了。(以⾄于我⽤了⼀周Python再回去⽤C#写VSTO时⼀度怀疑⼈⽣——为什么C#没有dataframe这种结构?)
Python适合做什么?Python能做的有很多,⼯作中对数据的处理,都可以脱离Excel⽤Python来做。基本上除了Excel插件之外,都可以⽤Python来处理。
vba自学好学吗
如果你要给同事写插件,写个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.需要 framework环境。这两个问题在我看来完全不是问题,都2020年了,如果还在⽤Office2007以前的版本,那我真是⽆Fuck说,⽽环境基本上正常的系统都不会缺,即使缺的话也可以在安装插件的时候下载安装。第三点是⽹上的资源⽐较少,可能⼤多数⼈都⽌步于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,⽬前⼯作中这三个都⽤。