使用Python编程MS Office宏?

Jes*_*sse 27 python excel vba ms-office

我最近把它作为一个教我自己如何用Python编程的项目.总的来说,我必须说我对它印象深刻.

在过去,我通常坚持使用VBA进行编程,主要是为了MS Excel(但也有点在MS Access和Word中),并且一直在努力寻找方法使其能够通过单个命令轻松完成Python所做的事情.

我想知道是否有合理的方法来利用Python的编程能力和易用性,同时利用Office中的各种工具(主要是Excel)?

Jas*_*oon 22

是的,一点没错.你想使用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")
Run Code Online (Sandbox Code Playgroud)

我确信在SO上有很多例子......就像这个.


Gre*_*att 9

有一组跨平台的Python实用程序 - 称为xlrd,xlwt和xlutils - 用于读取和写入Excel文件.存在一些限制(例如,我不认为它们可以处理宏),但它们允许您在非Windows平台上使用Excel文件,如果这对您有用.请参阅:http: //www.python-excel.org/

此外,还有一些问题已经涉及到这类主题,其中包括: 远程控制Excel有更好的方法(除了COM)吗?


小智 7

或者看看IronPython.IPy是Python 2.6的本机.NET实现,您可以在http://www.codeplex.com/ironpython找到它 .

我们已将它用于多个项目.您可以使用COM"从外部"使用它 - 或者像我们一样 - 使用ScriptHost编写Excel AddIn,它会调用IronPython代码,为您提供类似于VBA的环境.

作为.NET DLL,IPy可以很好地集成到现代Windows .NET堆栈中.


seq*_*oia 5

上面提到的xlrd,xlwt和xlutils软件包只能读取和写入大小限制为65,000行和256列的.xls文件。除此之外,它是一个很好的工具。

但是我已经转到另一个可以读取和写入.xlsx文件的python-excel软件包OpenPyXL。我也发现它易于使用,文档也不错。

OpenPyXL:http ://packages.python.org/openpyxl/index.html