需要骨架代码来从PythonWin调用Excel VBA

我需要从python脚本调用Excel工作簿中的VBAmacros。 其他人已经提供了Excel的工作簿的macros。 macros从外部数据库获取更新的值,并执行一些相当复杂的数据按摩。 我需要从这个按摩的结果,我真的不想在我的Python脚本中复制这个,如果我可以避免它。 所以,如果我可以从我的脚本中调用macros并获取按摩结果,那将是非常好的。

关于COM的一切我从“Win32上的Python编程”中学到了。 好书,但对我手头的工作还不够。 我搜查了一下,但还没有find如何做到这一点的好例子。 有没有人有任何好的例子,或者一些如何解决/调用VBAmacros的骨架代码? Excel COM接口上的一般参考(书籍,网页链接等)也可以在这里find帮助。 谢谢。

我很抱歉,我不知道python足够。 但是,以下应该有所帮助。

Excel的应用程序对象有一个运行方法 – 它带有macros的名字和参数。

让我们假设该工作簿有一个名为test的macros。

Sub test(ByVal i As Integer) MsgBox "hello world " & i End Sub 

你可以使用Application.Run“test”,1234来调用它

这将调用macros,并显示“hello world 1234”的消息框。

好,我知道了! 感谢您的Application.Run方法的帮助。 此信息以及“Microsoft Excel Visual Basic参考”: http : //msdn.microsoft.com/en-us/library/aa209782( office.10).aspx – 由Hammond&Robinson在“Python Programming on Win32“ – 是需要的。

这是骨架代码:

 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