Python - 运行 Excel 宏

标签 python excel win32com vba

我想使用 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, 'Exception occurred.', (0, u'Microsoft Excel', u"Cannot run the macro 'FilterLoans'. The macro may not be available in this workbook or all macros may be disabled.", u'xlmain11.chm', 0, -2146827284), None)

错误表明 FilterLoans 在 Database.csv 文件中不可用...我如何导入它?

最佳答案

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

关于Python - 运行 Excel 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11023990/

相关文章:

c++ - 使用C++在打印机上打印pdf文件

python - 使用 Python 打开 Outlook

c# - 在 C# 中计算过滤的 excel 范围的行数

python - Word & Python - 创建目录

python - 使用请求 python 抓取网页上的 AJAX 内容

python - 更改 scikit learn 中的数字格式

excel - 在 Excel 中,如何引用当前行而不是特定列?

php - xlsx 文件在 php 中下载时损坏

Python 列表 : exchange every n-th value with the (n+1)th

python - 不能根据数据在现有图上绘制计算的质心值