使用Python编写MS Office宏?
我最近开始自学Python编程,感觉这个项目挺不错的。
以前我主要用VBA编程,主要是在Excel里(偶尔也在Access和Word里用过),但是我发现很多Python能轻松用一个命令完成的事情,VBA却很难做到。
我在想,有没有什么好的方法可以把Python的强大和简单结合起来,同时又能利用Office里的各种工具(主要是Excel)呢?
6 个回答
你可以看看IronPython。IronPython是Python 2.6在.NET平台上的一个本地实现,你可以在http://www.codeplex.com/ironpython找到它。
我们在几个项目中使用过它。你可以通过COM来“外部”使用它,或者像我们一样,写一个Excel插件,里面有一个脚本主机,可以调用IronPython的代码,这样就能得到一个类似VBA的环境。
作为一个.NET的动态链接库,IronPython与现代Windows的.NET系统整合得非常好。
没错,完全可以。你需要使用 win32com
模块,它是 pywin32 的一部分(可以在这里下载)。
我发现通过在 VBA 中写一个宏,让 Python 来使用,可以大大简化 Python 的集成,然后只需要让 Python 调用这个宏就行了。它的样子大概是这样的:
from win32com.client import Dispatch as comDispatch
xl = comDispatch('Excel.Application')
xl.Workbooks.Open("Macros.xls", False, True)
xl.Run("Macros.xls!Macro_1")
我相信在 Stack Overflow 上有很多类似的例子……比如 这个。
有一套跨平台的Python工具,叫做xlrd、xlwt和xlutils,可以用来读写Excel文件。这些工具有一些限制,比如我觉得它们不能处理宏,但如果你需要在非Windows系统上使用Excel文件,这些工具还是很有用的。想了解更多,可以看看这个网站:http://www.python-excel.org/
另外,已经有一些StackOverflow上的问题讨论过类似的主题,包括这个问题: 有没有比COM更好的方法来远程控制Excel?