python vba 区别_VBA和Python该学哪个?
相信不少想继续深入学习的重度Excel用户都会产生这个疑问。
如果你继续学习的目标是为了获取下一份工作的机会的话
最近浏览了几份简历我也想分享一些经验我的专业背景是财务转数据分析我不建议大家盲目转型在面试过程中人力资源部门举例指出其他岗位每周可能收到70份简历而数据分析岗位每周可能收到700至1000份简历如果个人能力与行业标准有一定差距转型通常需要从基层做起对于年龄超过30岁的求职者基础岗位基本没有面试机会
我自己算是个有点偏执的人,在软件使用上有一定的洁癖倾向。遇到工具软件时必须选用最专业的版本。这样一来学习起来资料会更加丰富,并且也能让自己在编程方面有更多的造诣。下面我也从这个角度简单梳理一下VBA、Python、VSTO和RPA这四个编程语言的优缺点及其适用场景。
1、VBA:
属于Office系列内置的宏语言工具,在编程能力与易用性方面均具显著优势
适用于那些无法自行在电脑上安装软件的旧国企,在无法自行安装软件的情况下,则不得不选择其他方案。
VBA也更适合非IT专业人士入门编程,在无需单独安装IDE的情况下,在调试过程中可以在同一界面实时修改代码;虽然只能对断点之后的代码进行修改,在日常学习中已经非常便捷了。通过Excel工作簿管理文件时使用VBA可以使操作过程直观呈现;对于不熟悉的操作步骤还可以录制宏并直接提取代码作为参考。经过一定熟练程度后我建议尽快掌握数组操作这不仅比直接操作Excel更快而且能提升编程的专业性
有些人认为VBA专长于将Excel日常重复操作自动化处理。我对这点不太认同。如果只是自己使用的话,使用Python开发会更快捷。如果要与同事分享,则将Python打包成.exe并不复杂。或者最好一次性采用VSTO技术。
当然我也明白有些人完成VBA学习后觉得已经足够使用它来满足需求。因此将工作重点转向专业知识领域后就不再深入探索其他技术路线。使用VBA编写插件是否足够呢?足够!是否适合当前的工作需求?则不太适合!
我们的公司存在一批未被更新的VBA插件,这些问题类似于知乎上某个讨论的问题。开发这些工具的人转往集团部门后获得了晋升机会,在工作中不再继续优化或更新这些代码段。这些问题是否还有价值?答案是肯定的。那么如何进行维护?是否有必要对现有的VBA工具进行更新和修复?具体遗留在系统中的文件数量尚不明确。如今要将各个岗位的数据导入到数据库中进行管理,在这个过程中这些问题都会受到影响
在使用VBA时最大的困扰是集成开发环境(IDE)。即使尝试过当前流行的IDE工具也无法完全满足需求。编写程序的过程实在令人沮丧:每当尚未完成任何一行代码点击其他行都会弹出错误提示此外代码块内缺乏实时高亮效果以及缺乏必要的功能提醒。最近帮一位同事修复其编写的VBA脚本时发现 在Visual Studio Code中进行修改并重新粘贴回原文件会更加高效便捷。
VBA在功能扩展方面存在一定的挑战性。具体来说,在使用过程中需要手动添加相关的加载项以完成基本操作,并通过手动编写更新文件来完成软件升级操作。值得注意的是,在实现某些高级功能时会遇到困难:例如数据库功能需要依赖于外部ODBC驱动程序进行配置设置。如果希望将程序分发给他人使用,则必须确保该程序能够方便地与其他系统进行集成与交互:虽然不如Word加载项那么便捷,在实际应用中仍然能够满足大多数需求;而Excel加载项的操作流程相对较多一些,并不一定非常复杂;相比之下Word加载项的操作流程更加繁琐且复杂
2、Python
如今,在全球范围内被广泛讨论和使用的编程语言中,Python已经成为了一款不可替代的存在。它已经达到了的程度以至于在全球科技界掀起了一股热潮
相较于VBA语言而言,Python编程语言要求用户自行配置运行环境并安装集成开发环境(IDE)。就目前情况来看,在非专业人士中使用pip源获取软件包可能会遇到诸多困难。个人认为这可能与思维方式存在差异有关,并建议大家多加练习。
相对于其他编程语言而言,Python的一大显著优势在于其丰富的类库体系以及简洁明了的语法结构。在数据分析领域中,Pandas library以其powerful data structures如dataframe而闻名遐迩;使用dataframe进行数据操作几乎是一种令人愉悦的经历。通过学习和掌握Pandas library的基本功能与操作方法后,在实际应用中几乎完全取代了传统的For loops。(由此可见,在使用一周Python后转投C#开发VSTO工具包时感到非常疑惑:为何其他编程语言不具备像dataframe这样的强大功能?)
在数据处理领域中 Python 的用途非常广泛。我们可以通过 Python 来完成各种数据分析、自动化流程开发以及复杂计算任务等操作,并且能够实现与数据库的无缝连接(Database Integration)。相比其他编程语言或工具包(如 Excel 插件),我们能够更高效地完成大量重复性工作(Repetitive Tasks),从而显著提升工作效率(Work Efficiency))。与现有的工具包相比 Python 的优势在于其强大的功能库支持(Functionality Library),能够满足大部分业务场景的需求(Business Needs))。
如果你希望为同事开发插件,则不建议使用Python程序编写插件这一做法不太合适;除了编写运算逻辑之外;还可能需要绘制界面;最终生成一个.exe文件并发送给同事;这种体验显得相当割裂。
3、VSTO
微软推出了VSTO作为替代品;这也是主流Excel插件的标准安装方法;凭借Visual Studio提供的卓越开发体验;使用体验非常良好。
该工具集涵盖VB和C#两种编程语言。我的学习经历是从VBA直接转向C#。对于希望深入学习的朋友来说,可以直接选择C#而不涉及VB。
VSTO是专为开发Office插件而设计的工具,在自定义Excel模板方面表现尤为出色。其语法结构与VBA具有高度相似性,并且部分功能模块也与之高度重合。熟练掌握VBA后,在学习VSTO时仅需稍加努力便能事半功倍。
VSTO支持单击式部署(ClickOnce方式),更新操作相当简便。在进行数据库连接时,可以通过nuget平台轻松完成安装包的配置设置。这种解决方案显著提升了使用体验水平。
相较于VBA来说,VSTO的主要缺陷有三点:
1.对于较早版本的Office支持不足,特别是无法运行于Office 2007及以下版本。
2.此方案要求系统具备.NET框架环境。
3.这两个问题在我看来完全不是问题,都已经是二十一世纪末了,如果还在使用 Office 2007以前的老版软件,那实在是没有必要继续抱怨啦;而.NET环境基本上都是现代计算机的标准配置,即便缺少也无法通过安装相应的插件来解决。
4.第三点是资源相对匮乏,许多开发者选择停留在VBAs的能力层面。
4、RPA
很多人可能都不知道VSTO是什么,也就更不了解RPA了。其实,RPA也是一种实现自动化处理的方式,之前我也尝试使用过来也科技开发的Uibot软件(打钱),它的特点是可以无需编程就能完成自动化操作,不过如果具备VB编程基础的话可能会更容易上手。但社区版版本可能存在一些小问题,至于付费版本我没有亲自体验过
除了Uibot之外还有一种叫UiPath。国外制作的可能是最知名的RPA软件之一。如果英语熟练的话,则可以尝试体验这种工具。
Uibot的优势在于无需编程即可完成办公自动化任务。主要原因是集团需要汇报预算时必须在自定义界面操作。然而该系统的细节设计存在明显问题——每次汇报都要复制粘贴数百次数据非常繁琐。幸好我们采用了Uibot工具后只需配置参数即可让电脑自动完成整个流程
回想使用Uibot的经历时, 我总会想起去年在一个集团里负责竣工决算的项目, 在协助企业录入固定资产管理系统的数百个项目中, 几个员工笨拙地逐个登录网页进行操作。如果当时知道有像Uibot这样的工具可用……
Uibot需单独安装,并占用约400MB的空间也不算麻烦。经过一番了解后发现对高分辨率的支持确实存在一些不足的地方。不过这倒不是什么大问题嘛……毕竟能用RPA的人本来就少
在使用体验上与Python存在明显的差距,在进行部署时也需要独自构建一个完整的RPA系统以实现自动化需求;该系统的运行完全依赖于自身构建的自动化架构;然而,在获取完整功能之前,请确保具备相应的预算支持;仅凭免费版本无法完成全部工作。
总结:
VBA的特点在于自带IDE,并不需要额外配置;Python以其简洁明了的语法而著称,在数据分析领域尤为突出;VSTO专为开发Excel插件而设计,默认即可实现二次开发功能。相较于VBA而言,在跨平台应用开发方面更为出色。
我是最早掌握VBA语言的人之一,在对京都底稿的功能不满后希望通过自我设计来重构原有系统;随后我又转向学习C#并致力于开发基于桌面的应用程序(VSTO);为了职业转型的需求又深入学习Python;现在在工作中我都将其广泛应用。
