Python - 运行 Excel 宏

4
我想运用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'微软 Excel', u"无法运行宏 'FilterLoans'。该工作簿可能没有此宏或所有宏已被禁用。", u'xlmain11.chm', 0, -2146827284), None)

这个错误提示说在 Database.csv 文件中 FilterLoans 不可用... 那我该如何导入它呢?


1
从未使用过Python,但猜测是:macrowb.Run("FilterLoans") - iDevlop
1
我也一样 :P 我没有使用过Python,所以尝试这个excel.Run("MacroBook!FilterLoans") - Siddharth Rout
Siddharth的代码有效,谢谢! @iDevlop - 那不起作用,因为它试图在macrowb上运行代码。 - user1137778
2个回答

0
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")

0

尝试将宏保存到您的“Normal”项目中并调用。

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接