使用参数调用宏:Python win32com API

2024-04-29 11:40:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我想做的是从我的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世界!)。

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

谢谢你。

达米安。


Tags: run代码示例参数application来源openmacro
1条回答
网友
1楼 · 发布于 2024-04-29 11:40:04

不幸的是,在这种情况下,win32com关于excel的完整文档并不存在;您将不得不查看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代码将使用params集调用宏:

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发送到宏的。希望这有帮助。

相关问题 更多 >