You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio中Xlwings打开Excel触发(-2147352567)错误的解决求助

解决Visual Studio 2022中Python操作Excel的(-2147352567)异常问题

问题场景

在Visual Studio 2022(版本17.3.3)中执行以下Python代码时,触发(-2147352567, 'Exception occurred.', )异常:

import time

app=xw.App(visible=False)
wb=app.books.open( r"c:\test\x.xlsm")
ws=wb.sheets['Sheet1']
wb.save()
wb.close()
app.kill()

对应的堆栈跟踪信息:

Stack trace:
 >  File "C:\Users\user1\AppData\Local\Temp\gen_py\3.10\00020813-0000-0000-C000-000000000046x0x1x9.py", line 41316, in __call__ (Current frame)

 >    ret = self._oleobj_.InvokeTypes(0, LCID, 2, (13, 0), ((12, 1),),Index

已尝试的无效操作:

  • 重新安装所有Python模块
  • 尝试取消勾选未捕获和已引发异常断点,但该VS版本中找不到对应复选框,Debug选项卡也无相关设置

解决方法

1. 验证文件路径与权限

  • 确认c:\test\x.xlsm文件真实存在,当前运行代码的用户拥有该文件的读写权限
  • 临时调整Excel宏安全级别:打开Excel>文件>选项>信任中心>信任中心设置>宏设置,选择「启用所有宏」(测试完成后建议改回默认安全设置)
  • 确保路径无特殊字符,当前代码的原始字符串写法r"c:\test\x.xlsm"是正确的,无需修改

2. 优化Excel资源管理逻辑

异常大概率是Excel进程初始化或资源释放不及时导致的OLE调用失败,可调整代码如下:

增加延迟等待版本

import time
import xlwings as xw

# 禁用自动新建工作簿,减少资源占用
app = xw.App(visible=False, add_book=False)
time.sleep(2)  # 等待Excel进程完全初始化
wb = app.books.open(r"c:\test\x.xlsm")
time.sleep(1)  # 等待工作簿加载完成
ws = wb.sheets['Sheet1']
wb.save()
wb.close()
app.quit()  # 优先使用quit()正常退出
app.kill()  # 仅当quit()无效时兜底强制结束进程

上下文管理器版本(推荐)

利用上下文管理器自动处理资源释放,避免手动管理的疏漏:

import xlwings as xw

with xw.App(visible=False, add_book=False) as app:
    with app.books.open(r"c:\test\x.xlsm") as wb:
        ws = wb.sheets['Sheet1']
        wb.save()

3. 调整VS调试器异常设置

  • 打开VS菜单:调试>窗口>异常设置(快捷键Ctrl+Alt+E)
  • 在弹出的窗口中,展开「Python异常」,取消勾选「已引发」分类下的通用异常,或仅过滤xlwings相关的异常
  • 若找不到对应选项,可重置VS调试设置:工具>导入和导出设置>重置所有设置,选择默认调试配置

4. 检查版本兼容性

  • 升级xlwings到最新稳定版:执行pip install --upgrade xlwings
  • 确认Python与Excel的位数一致(均为32位或均为64位),位数不匹配会导致OLE调用异常

内容的提问来源于stack exchange,提问作者Myna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 09:30:24