python - 如何从 Python 运行 Excel VBA / 宏
问题描述
我正在尝试在 Spyder 中使用 python 3.7 在 xlsm 工作簿中运行 VBA 宏。此工作簿有两个工作表。
我目前运行的代码没有问题地运行并保存新文件,但是它没有像它应该那样触发 VBA。
我知道这个宏有效,因为如果我手动单击 Excel 中的按钮,它就可以正常工作。
有人可以帮忙吗?我检查了信任中心下的宏设置并启用了所有宏,所以我认为这不是权限问题,但我不是这台电脑的管理员。
代码如下:
import os
import win32com.client
xl = win32com.client.Dispatch("Excel.Application")
wb = xl.Workbooks.Open("Z:\FolderName\FolderName2\FileName.xlsm")
xl.Application.Run("MacroName")
wb.SaveAs("Z:\FolderName\FolderName2\FileName1.xlsm")
wb.Close()
xl.Quit()
解决方案
首先确保您在当前工作或用户/文档中有 All.xlsm 文件(有时它在 yourDocuments 目录中工作,有时不在,所以最好两者都有)
将您的宏名称与包含宏的文件名一起传递,您可以根据您的要求更改 ReadOnly 或 Savechanges 等参数
并确保在每次运行后删除 xl 对象
import win32com.client
xl =win32com.client.dynamic.Dispatch('Excel.Application')
xl.Workbooks.Open(Filename = XYZ.xls, ReadOnly= 1)
xl.Application.Run('All.xlsm!yourmacroname')
xl.Workbooks(1).Close(SaveChanges=1)
xl.Application.Quit()
del xl
推荐阅读
- php - 使用 PHP 从 SQL 数据库中获取 url 时如何引入锚链接?
- c++ - 错误:“int*”和“int”类型的无效操作数到二进制“operator*”
- c# - Codefirst 的实体框架迁移错误
- css - 将 CSS 动画应用于文本 - 如何正确执行?
- c# - SQL Server,创建密码字段 MD5
- node.js - 如何阻止 ImageMagick 由于 SIGKILL 而失败?
- python - Groupby DatetimeIndex 月份
- matlab - 是否有任何 Octave 的替代 Matlab 的 pointCloud()?
- css - 将菜单导航图标移动到页面顶部
- python - Django NoReverseMatch error when I try to connect to my URL