使用参数调用macros:Python win32com API

我想要做的就是从我的Python代码中调用一个macros。 这里是来源的样本:

xl = win32.gencache.EnsureDispatch('Excel.Application') xl.Visible = 1 xl.Workbooks.Open("C:\\Program Files\\Microsoft Office\\Office14\\XLSTART\\perso.xlsm") xl.Workbooks.Open(argv[1]) xl.Application.Run('perso.xlsm!' + argv[2]) xl.Application.Run('perso.xlsm!' + argv[2] + '2') xl.Workbooks.Open(argv[0]) xl.Application.Run('perso.xlsm!aggregate_report_ouverture_appli') xl.Application.Run('perso.xlsm!macro', 'lol') xl.Save() xl.Quit() 

前两个macros工作正常。 但最后需要设置一个参数(在这种情况下“大声笑”)。 有了这个尝试:

 xl.Application.Run('perso.xlsm!macro', 'lol') 

我的macros是调用,但参数没有设置。 任何想法如何做到这一点,或者我可以find这个模块的“javadoc”(是的,我来自Java世界!)。

如果你需要更多的解释,只需告诉我。

谢谢。

达米安。

不幸的是,在这种情况下,关于excel的win32com的完整文档不存在; 你将不得不看MS Office Excel的MSDN大多数(这是不是太糟糕,你只需要翻动代码有时):

http://msdn.microsoft.com/en-us/library/office/bb149081(v=office.12).aspx

至于你的问题,考虑这个macros的例子,它有两个参数:

 Sub Proc(sParam1 As String, iParam2 As Integer) MsgBox sParam1 & " is " & iParam2 & " Years Old" End Sub 

macros有两个参数,它正在寻找。 下面的python代码将使用params集来调用macros:

 import win32com.client xl=win32com.client.Dispatch("Excel.Application") xl.Visible = True Path = "C:\\Program Files\\Microsoft Office\\Office14\\XLSTART\\perso.xlsm" xl.Workbooks.Open(Filename=Path) param1 = "Jeremy" param2 = 3 xl.Application.Run("Proc", param1, param2) 

我不确定在你的情况下macros是什么types的variables,但是'lol'是,但是在你的例子中它是从python作为string发送到macros。 希望这可以帮助。