pyvot:我可以从python脚本运行Excel VBA宏吗?

时间:2013-07-03 11:31:36

标签: python excel-vba python-2.7 com vba

假设我已使用以下代码在Report WW26blueprint_with_chart_330.xlsm对象中加载report(此处使用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脚本运行上述任何宏吗?

3 个答案:

答案 0 :(得分:1)

未设法使用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

答案 1 :(得分:1)

这对我有用:

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

答案 2 :(得分:-1)

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