我需要从 python 脚本调用 Excel 工作簿中的 VBA 宏。其他人提供了带有宏的 Excel 工作簿。该宏从外部数据库获取更新的值,并对数据执行一些相当复杂的处理。我需要这种按摩的结果,如果可以避免的话,我真的不想在我的 Python 脚本中重复它。因此,如果我可以从脚本中调用宏并获取按摩结果,那就太好了。
我所知道的有关 COM 的一切都是从“Win32 上的 Python 编程”中学到的。好书,但不足以完成我手头的任务。我进行了搜索,但没有找到任何关于如何执行此操作的好示例。有谁有任何好的例子,或者一些如何寻址/调用 VBA 宏的框架代码?有关 Excel COM 接口(interface)的一般引用(书籍、Web 链接等)在这里也会有所帮助。谢谢。
最佳答案
好的,我明白了!感谢您对 Application.Run 方法的帮助。此信息以及“Microsoft Excel Visual Basic 引用”:http://msdn.microsoft.com/en-us/library/aa209782(office.10).aspx -- 正如 Hammond & Robinson 在“Win32 上的 Python 编程”中所推荐的那样 -- 正是所需要的。
这是骨架代码:
import win32com.client
xl=win32com.client.Dispatch("Excel.Application")
xl.Workbooks.Open(Filename="<your Excel File>",ReadOnly=1)
xl.Application.Run("<your macro name>")
#...access spreadsheet data...
xl.Workbooks(1).Close(SaveChanges=0)
xl.Application.Quit()
xl=0
关于vba - 需要骨架代码从 PythonWin 调用 Excel VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/345920/