【问题标题】:Call a macro with parameters : Python win32com API使用参数调用宏:Python win32com API
【发布时间】:2013-05-19 00:45:46
【问题描述】:

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

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

谢谢。

达米安。

【问题讨论】:

    标签: python excel python-2.7 automation pywin32


    【解决方案1】:

    很遗憾,在这种情况下,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 代码将使用参数集调用宏:

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

    【讨论】:

      猜你喜欢
      • 2022-08-17
      • 2020-01-22
      • 1970-01-01
      • 1970-01-01
      • 2012-02-02
      • 2013-01-21
      • 1970-01-01
      • 1970-01-01
      • 2013-11-01
      相关资源
      最近更新 更多