pyvot:我可以从 python 脚本运行 Excel VBA 宏吗?
Posted
技术标签:
【中文标题】pyvot:我可以从 python 脚本运行 Excel VBA 宏吗?【英文标题】:pyvot: can I run Excel VBA macros from python script? 【发布时间】: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 脚本运行上述任何宏吗?
【问题讨论】:
【参考方案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()
非常重要。否则您可能会感到困惑。
【讨论】:
以上是关于pyvot:我可以从 python 脚本运行 Excel VBA 宏吗?的主要内容,如果未能解决你的问题,请参考以下文章