使用参数调用宏:Python win32com API

3
我希望能够从Python代码中调用宏。以下是源代码示例:
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() 

前两个宏运行正常。但最后一个需要设置参数(在这种情况下为“lol”)。尝试如下:

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

我的宏被调用,但参数未设置。 有什么想法或者我可以在哪里找到这个模块的“javadoc”(是的,我来自Java世界!)。如果需要更多的解释,请告诉我。谢谢你。Damien.
1个回答

4
很不幸,在这种情况下,关于Excel的win32com完整文档不存在;你需要查看MS Office Excel MSDN获取大部分信息(这并不太糟糕,有时只需调整代码即可):

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

关于你的问题,考虑一个带有两个参数的示例宏:
Sub Proc(sParam1 As String, iParam2 As Integer)
        MsgBox sParam1 & " is " & iParam2 & " Years Old"
End Sub

该宏有两个参数需要寻找。以下Python代码将使用设置的参数调用该宏:
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)

我不确定宏在您的情况下期望的变量类型是什么,但在您的示例中,“lol”被作为字符串从Python发送到宏。希望这可以帮助您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接