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 宏吗?的主要内容,如果未能解决你的问题,请参考以下文章

笨办法学Python(十三)

Python练习——同时安装python2 与 python 3如何选择不同解释器运行脚本

如何安排 python 脚本从 anaconda 运行?

我可以从另一个正在运行的 python 脚本访问列表吗

python一个脚本循环两次

从命令行停止 Abaqus 中正在运行的 Python 脚本