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