需要骨架代码来从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
- COM自动化后,Excel进程不会退出
- 图片输出excel图(通过自动化)
- 为什么Excel.WorkSheet.Copy引发具有HRESULT的types为“System.Runtime.InteropServices.COMException”的第一次机会exception的exception:0x800A03EC
- 与Excel和其他MS Office应用程序的最大COM连接数
- 使用VBScript以独占模式打开Excel文件
- 无法创buildCOM对象`Excel.Application':“访问被拒绝”
- 从Excel形状中获取形状types
- 实例化新的Excel过程时出错
- 从Python over COM调用Excelmacros/ Excel解算器