【问题标题】:pyvot: can I run Excel VBA macros from python script?pyvot:我可以从 python 脚本运行 Excel VBA 宏吗?
【发布时间】:2013-07-01 01:45:24
【问题描述】:

假设我在report 对象中加载了Report WW26blueprint_with_chart_330.xlsm 并使用以下代码(这里使用print.range 来测试是否加载了工作簿):

import xl
report = xl.Workbook("Report WW26blueprint_with_chart_330.xlsm")
print report
print(report.range("A1:E50").get())

pyvot documentation 我明白了:

Pyvot 是在 Excel 的 COM API 之上编写的。你总能得到 底层 COM 对象并自己进行 COM 调用

我的 Excel 文件有以下宏:

Macro1 
Масго2 
Macro7  

我可以使用 python/pyvot 直接从 python 脚本运行上述任何宏吗?

【问题讨论】:

    标签: python excel python-2.7 com vba


    【解决方案1】:

    这是为我做的:

    report.xlWorkbook.Application.Run('Macro1')
    

    【讨论】:

      【解决方案2】:

      使用pyvot 无法做到这一点,但可以使用pywin32 完成,如下所示:

      import win32com.client
      xl=win32com.client.Dispatch("Excel.Application")
      xl.Workbooks.Open(Filename="C:\Users\florinescu_eduard\Downloads\\Report WW26blueprint_with_chart_330.xlsm",ReadOnly=1)
      xl.Application.Run("Macro1")
      xl.Workbooks(1).Close(SaveChanges=1)
      xl.Application.Quit()
      xl=0
      

      【讨论】:

        【解决方案3】:

        在调试时确保xl.Application.Quit() 非常重要。否则您可能会感到困惑。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-08
          • 1970-01-01
          • 2015-04-28
          • 2023-03-08
          • 2015-06-13
          • 1970-01-01
          相关资源
          最近更新 更多