二次开发vba_VBA和Python该学哪个?
相信不少想继续深入学习的重度Excel用户都会产生这个疑问。
如果您的学习目标是为了在职场中获得下一职位,则建议您访问职业网站浏览岗位信息;参考各职位需求列表选择最适合自身发展的方向进行深入学习。若仅追求工作能力的提升,则可专注于补充个人专业技能发展路径。
最近浏览了几份简历。
我也想谈谈。
我从事财务向数据分析转型。
不建议大家盲目转型。
在面试过程中,
人力部门举例指出:
其他岗位每周可能收到70份简历,
而数据分析岗位每周能处理700份甚至更多。
如果个人能力一般或稍显平庸,
那么转型通常需要从基层做起。
年过三十的人,
通常难以获得数据分析岗位的基础面试机会。
我的性格上具有一定的强迫倾向,在使用工具软件时也具有一种追求代码规范的习惯。对于工具软件的选择标准很高,在学习资料方面同样能够获得较为丰富的内容,并且对自己的专业能力也相当有信心。以下从这个角度简单分析一下VBA、Python、VSTO以及RPA各自的优劣所在,并探讨它们各自最适合应用于哪些场景。

1、VBA:
VBA是微软开发的一种基于Visual Basic的自动化编程语言,在Microsoft Office系列软件中预装集成,并与Python、VSTO和RPA等技术相比其主要优点在于无需独立安装IDE(集成开发环境),即可直接在Excel工作表中进行代码编写和功能扩展
那些需要通过VBA来管理软件安装的老式国有企业更适合使用VBA进行操作。由于无法自行安装软件的原因,因此不得不采取这种方法。
对于非IT专业人员来说,VBA也相对容易上手。它无需额外安装集成开发环境,并且可以在调试时实时修改代码,尽管只能修改断点后的代码,但在日常学习中已经足够便捷。通过结合Excel工作簿,使用VBA可以实现直观的操作界面,每一步骤都清晰可见;对于不熟悉的操作步骤可以通过录制宏来捕获并复制相应的代码。熟练掌握后,我认为尽快掌握数组运算将比直接操作Excel更为高效和专业。
有些人认为VBA非常适合将Excel中的日常重复操作一键化。对此我持保留意见。如果仅限于个人使用,则Python开发效率更高。将Python打包成独立执行文件(.exe)相对较为简便。另一种选择是直接采用VBA的扩展功能(VSTO)。
我明白有些人在学习完VBA后认为已经足够使用了,并因此将工作重点转向了更专业的领域而不继续深入探索其他技术。使用VBA编写插件是否足够?确实足够了;但是否合适呢?不合适。
我们的公司存在一批 legacy VBA 插件,如同知乎的一位回答者提到的那样,开发这些插件的人因晋升调动至集团部门,导致遗留下来一堆 VBA 插件数量众多。那么这些 legacy VBA 插件到底还有什么价值呢?确实具有一定的参考价值。如何进行有效的维护管理呢?是否需要对现有的 VBA 插件进行持续的维护工作呢?具体遗存下来的文件数量难以确切统计,整个公司内部各职能部门都或多或少地受到影响。The current task is to ensure that all departmental data are properly integrated into the database; these legacy VBA scripts will inevitably become a focal point of our data management strategy.
VBA的主要缺陷在于其集成开发环境(IDE)。即便你熟悉现代IDE的使用方法,在编写VBA代码时仍需格外谨慎。那个编程体验简直令人沮丧:在尚未完成任何一行代码时点击其他行就会弹出提示窗口;此外还缺乏代码高亮功能以及相关的代码提示信息。
VBA的主要缺点之一在于其安装与引用过程相对繁琐。在执行安装操作时,默认情况下无法直接添加VBA相关的加载项,在某些情况下还需要编写自定义脚本来进行更新操作以满足需求。这使得与其他功能模块之间的集成显得力不从心。例如,在处理数据库连接时需先单独安装ODBC驱动程序以实现数据交互需求的情况下,则需先单独安装ODBC驱动程序以实现数据交互需求的情况下才能完成任务。基本需求则是要降低使用成本。对于Excel加载项而言虽然步骤稍显繁琐但仍然 manageable 只要按照指导一步步进行即可完成任务 而Word加载项则因为其特殊性导致配置较为复杂 必须将该加载项放置于系统预设的默认路径中 否则每次启动Word时都需要手动重新配置才能正常运行

2、Python
如今,在全球范围内被广泛讨论和推崇的编程语言是Python。它已经成为网络文化中的热门话题,并被广泛认为是最具影响力的编程语言之一。对于那些渴望掌握最新技术的人来说,在社交媒体上经常可以看到各种关于如何快速掌握编程知识的帖子:例如,在学习Excel只需两小时后转而学习Python仅需五分钟;学会Python后无需再担心加班问题。这些信息不仅帮助初学者更快地进入编程领域,也为他们提供了实用的学习资源。

在配置环境和安装IDE方面
Python的特点是类库种类繁多,在数据处理中常用的Pandas库使用dataframe结构进行数据处理几乎如鱼得水(爽感十足)。完全替代了传统的For循环方式。
在哪些方面适合使用Python?它有很多应用领域,在数据处理方面能够有效地摆脱了对Excel的依赖。除了现有的Excel插件功能外,在很多情况下同样可以用Python进行处理。
如果你希望为同事开发一个插件的话,并不适合编写一个完整的Python程序。除了实现核心功能之外,还需要创建用户界面并将其打包成.exe文件发送给同事。然后在运行完成后还需指导他们重新打开Excel进行数据处理。这种体验显然不够顺畅。

3、VSTO
VSTO由微软公司替代表现为替代方案于VBA, 被视为2020年主流Excel插件的标准安装途径.凭借功能最强大的集成开发环境(IDE), Visual Studio为开发者带来了极佳的操作界面体验感.
VSTO兼容Visual Basic与C#两种编程语言,并且我是从Visual Basic直接转向学习C#。因此,对于那些希望快速入门的读者来说,可以直接跳过对Visual Basic的学习。
它主要是为了开发用于Microsoft Office的应用程序而创建的一种开发工具包。它特别擅长自定义Excel模板的设计,并且其语法结构与Visual Basic for Applications(VBA)高度相似。对于已经熟练掌握VBA的开发者来说,在学习VSTO时能够事半功倍。
VSTO支持通过ClickOnce部署方案进行发布操作;该功能无需复杂的配置过程即可实现;通过简单的NuGet包即可实现数据库连接;整体使用体验得到了显著提升。
VSTO相较于VBA存在三个主要缺陷:一是无法兼容早期版本的Office应用软件(如无法兼容 office 2007 之前的版本)。二是依赖.NET Framework环境才能运行(net framework 环境对于现代操作系统已经较为常见)。三是可获得的相关资源较少(可能使得大多数开发者最终仍停留在使用vba阶段)。然而我认为这些问题其实都不是大问题,在当前技术环境下到目前为止 office 2013 及以上版本都已经具备了良好的兼容性(即使是在使用 office 2013 或更高版本时仍然无需担心兼容性问题)。至于.net 环境目前几乎所有正常的操作系统都会配备这一功能(即便有缺失也可以通过下载相应的扩展程序来解决)。第三个缺陷即网络资源匮乏的情况确实是一个不容忽视的问题(这可能导致许多开发者最终选择继续使用vba而非转向其他技术)。不过这并不是一个决定性的因素因为相对于vba来说 vsto 的学习成本较低且其扩展性更强

4、RPA
一般情况下,人们可能既不了解VSTO也不熟悉RPA。
从本质上说,RPA是一种实现自动化操作的技术。
此前,我也曾尝试使用来也科技开发的Uibot工具,它特别适合那些具备VB编程基础的人使用。
值得注意的是,免费版本的小bug可能会带来不便,而我已经未接触过付费版本。
除了Uibtbot外还有一款UiPath, UiPath是国外开发水平最高的RPA软件, 如果你英语水平较高的话,不妨一试体验.
Uibot的特点是可以无需学习编程即可实现办公自动化操作,并且使用体验尚可。应用的主要原因在于集团需要上报预算。为了满足需求,在自定义界面中进行配置和管理。然而由于预算细节的设计较为复杂或难以处理。提交一个预算方案时会面临手动输入大量数据的挑战。而通过Uibot只需配置好参数后即可实现自动处理流程。
回想起来,在使用Uibot后那段时期里, 我曾协助某集团完成去年的竣工决算项目, 并负责协助企业录入固定资产数据. 那是一个涉及大几百个项目的工作量(几十个), 几十个人笨拙地不熟练地一个个在网页上点击(逐一点击), 如果当初了解并掌握Uibot的强大功能的话.
安装Uibot系统时需要单独操作,并且大约占用400多兆的空间资源也算正常。但对高分辨率的支持却显得力不从心,并不构成什么实质性的问题;毕竟在实际应用中使用自动化测试脚本的人群基数有限,并未引起大家过多的关注
在使用体验上与Python存在明显的差距,在需要部署的情况下也需要独立构建一个完整的RPA系统架构;整个自动化流程都依赖于该RPA系统的高效运作;然而,在获取完整功能之前,请确保有一定的预算支持;对于付费版本而言,在社区版本中无法获得完整的功能集合。

总结:
VBA的主要特点包括集成开发环境(IDE),且无需额外配置即可使用;Python以其简洁明了的语法著称,并特别适用于数据分析和处理任务;VSTO具有良好的软件扩展性,并特别适用于作为Excel插件实现各种功能;相比之下,在编程技能不足的情况下寻求快速入门的方法时选择RPA更为合适;其优势在于能够实现跨软件的操作与交互过程。
VBA的主要特点包括集成开发环境(IDE),且无需额外配置即可使用;Python以其简洁明了的语法著称,并特别适用于数据分析和处理任务;VSTO具有良好的软件扩展性,并特别适用于作为Excel插件实现各种功能;相比之下,在编程技能不足的情况下寻求快速入门的方法时选择RPA更为合适;其优势在于能够实现跨软件的操作与交互过程。
我在学习阶段首先掌握了Visual Basic for Applications(VBA),主要是因为对京都底稿的功能需求和个人化需求有所期待。随后又系统性地学习了C#并应用于开发基于ADO.NET的扩展功能(如VSTO)。最终转向人工智能领域后转修了Python编程课程。目前工作中这三个工具现在都被广泛应用于我的工作流程中。

