Python - 运行 Excel 宏

Posted

技术标签:

【中文标题】Python - 运行 Excel 宏【英文标题】:Python - run Excel macro 【发布时间】:2012-06-16 22:45:57 【问题描述】:

我想使用 Python 在 Data.csv 中的工作表上运行 MacroBook.xlsm 中包含的宏。

通常在 excel 中,我打开这两个文件并将焦点转移到 Data.csv 文件并从 MacroBook 运行宏。 python脚本每天都会下载Data.csv文件,所以我不能把宏放到那个文件里。

这是我的代码:

import win32com.client
import os
import xl

excel = win32com.client.Dispatch("Excel.Application")

macrowb = xl.Workbook('C:\MacroBook.xlsm')
wb1 = xl.Workbook('C:\Database.csv')
excel.Run("FilterLoans")

我得到一个错误,

pywintypes.com_error: (-2147352567, '发生异常。', (0, u'Microsoft Excel', u"无法运行宏 'FilterLoans'。宏 此工作簿中可能不可用,或者可能禁用所有宏。", u'xlmain11.chm', 0, -2146827284), 无)

该错误指出 FilterLoans 在 Database.csv 文件中不可用...如何导入它?

【问题讨论】:

从未使用过 Python,只是猜测:macrowb.Run("FilterLoans")? 这里也一样 :P 我没用过python所以试试这个excel.Run("MacroBook!FilterLoans") Siddharth 的代码有效,谢谢! @iDevlop - 这不起作用,因为它试图在宏 wb 上运行代码。 【参考方案1】:

1) 您不能在 *.csv 文件上使用 VBA。您需要将 *.xlsm 文件作为活动工作簿。如果您的宏知道如何找到它,我认为您根本不需要打开 *.csv 文件。

2) 在 Office Excel 中启用 VBA 模块访问:

File
options
Trust Center
Trust Center Settings
Macro Settings
Enable VBA access

3)我正在使用这个函数来运行宏:

excel.Application.Run("FilterLoans")

【讨论】:

【参考方案2】:

尝试将宏保存到“正常”项目并调用。

excel.Application.Run("Normal.ModuleName.SubName")

您甚至可以通过编程方式将模块添加到普通配置文件,但如果您没有足够的访问权限,Office 不允许您这样做。

【讨论】:

以上是关于Python - 运行 Excel 宏的主要内容,如果未能解决你的问题,请参考以下文章

python对具有宏excel的操作

excel运行宏后无结果也不提示错误时啥原因?

excel使用宏编写简单算法后运行无输出结果

在excel中运行访问宏

打开 Excel 文件,运行宏,保存(覆盖)

如何从SharePoint运行Excel宏?