我应该用Python代替VBA吗?

4 投票
2 回答
30774 浏览
提问于 2025-04-17 10:53

我正在做一个演示(可能还会做一个小应用程序),是关于财务会计模型的。我用VBA/Excel来输入数据(比如用表单),进行计算和展示结果,同时也通过VBA程序向MS Access数据库发出SQL查询。原则上,这些组件的功能对我来说还算不错(我知道VBA有点过时了,使用起来也不是特别顺畅)。

我已经做这个一段时间了(我是一名工程师,有一些其他语言的古老经验,虽然从来没有作为程序员工作过),对这些事情基本上掌握得不错,能找到我犯的编程错误。不过,当出现一些看起来并不是我造成的错误,而是VBA本身的不稳定或缺陷时,我真的快要崩溃了。

所以我想问的是,作为一个完全没有Python经验的人:我能否用Python实现我上面描述的功能?你能告诉我Python是否比VBA/Excel更稳定,出错的几率是否更低吗?(我在用Windows 7)非常感谢你的建议。

2 个回答

1

我强烈建议你使用Python来做这个。Python已经成为数据分析的标准工具。微软正在考虑把Python加入到Excel中:https://news.ycombinator.com/item?id=15927132

不过现在还没有加入:https://excel.uservoice.com/forums/304921-excel-for-windows-desktop-application/suggestions/10549005-python-as-an-excel-scripting-language

尽管如此,你在VBA中能做的事情,使用Python也都能做到,而且还可以做得更多,以下是一些相关的库:

  1. Xlwings: https://github.com/ZoomerAnalytics/xlwings
  2. Pywin32: https://github.com/Googulator/pypiwin32
  3. Pyspread: https://manns.github.io/pyspread/
  4. Xlswriter/Xlsread

在这些库中,我建议你使用xlwings。我用过这个库,效果非常好。你甚至可以通过Python代码来执行VBA。这样你就可以享受两全其美的好处,也就是说,你可以在Python中使用任何数据分析的工具来进行计算,当你需要的时候(但没有访问VBA提供的功能,而这些功能在xlwings中不支持),你可以直接调用Excel中的VBA函数。

11

如果你决定用Python来自动化Office应用程序,可以看看Python Win32扩展

不过,我对此有点怀疑。因为你需要先安装Python并学习它。而如果你打算把这个应用程序分发给其他用户,他们也需要安装Python。

而且,你提到的关于声明变量的例子说明,你花时间去学VBA和你想自动化的Office应用程序的对象模型会更有帮助。在那个例子中,你把对VBA基础知识的不理解误解为“VBA容易出错”。其实,Python并不能解决这个问题。

撰写回答