使用xlwings在VS中打开带宏Excel文件时抛出异常求助
问题:xlwings打开启用宏的Excel工作簿时抛出异常
环境信息
- Microsoft Visual Studio Community 2022(64位)版本17.11.1
- Python 3.9.13(64位)
- Microsoft Excel for Microsoft 365 MSO(版本2407 Build 16.0.17830.20056)64位
尝试的代码方案
方案1(参考xlwings官方文档)
import xlwings as xw file_path = r'C:\PythonExcelTest\pythonmacro.xlsm' wb = xw.Book(file_path) # 此处抛出异常 macro1 = wb.macro("Module1.MySub") macro1()
方案2(参考YouTube示例)
import xlwings as xw file_path = r'C:\PythonExcelTest\pythonmacro.xlsm' app = xw.App(visible=True, add_book=False) wb = app.books.open(file_path) # 此处抛出异常 run_macro = wb.app.macro("Module1.MySub") run_macro()
两种方案在打开启用宏的工作簿时均抛出相同异常,需排查原因。
排查建议
- 检查宏安全设置
- 打开Excel,依次进入「文件」>「选项」>「信任中心」>「信任中心设置」>「宏设置」,选择「启用所有宏(不推荐;可能会运行有潜在危险的代码)」或「启用签署的宏」(若宏已签署),同时勾选「信任对VBA工程对象模型的访问」。
- 验证文件路径与权限
- 确认
C:\PythonExcelTest\pythonmacro.xlsm路径正确、文件存在且未被其他程序锁定(比如手动打开了该文件)。 - 尝试将文件移到桌面等权限开放的目录,测试Python是否能正常读取。
- 确认
- 确认组件位数一致性
- 虽然当前环境都是64位,但需确保xlwings是对应64位版本,可通过
pip show xlwings查看安装信息。
- 虽然当前环境都是64位,但需确保xlwings是对应64位版本,可通过
- 测试基础Excel操作
- 先运行以下代码验证xlwings基础功能是否正常,排除安装或配置问题:
import xlwings as xw wb = xw.Book() wb.save(r'C:\PythonExcelTest\test.xlsx') wb.close()
- 先运行以下代码验证xlwings基础功能是否正常,排除安装或配置问题:
- 检查VBA宏本身
- 手动打开
pythonmacro.xlsm,直接运行Module1.MySub,确认宏无语法或运行时错误。
- 手动打开
- 启用日志获取详细错误
- 添加日志输出,捕获更多异常细节:
import xlwings as xw import logging logging.basicConfig(level=logging.DEBUG) file_path = r'C:\PythonExcelTest\pythonmacro.xlsm' wb = xw.Book(file_path)
- 添加日志输出,捕获更多异常细节:
内容的提问来源于stack exchange,提问作者Benny88
相关产品推荐
相关产品推荐

