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

如何用openpyxl打开.xlsm文件并触发宏?解决文件读取异常

解决xlsm文件修改后无法打开及触发宏的问题

问题根源

你用openpyxl处理.xlsm文件后保存时,默认会生成无宏的.xlsx格式文件,即便手动改后缀为.xlsm,文件内部结构不匹配宏启用格式,导致Excel报错。

修正后的代码

修改加载和保存逻辑,确保保留VBA宏内容:

import openpyxl

# 加载文件时指定keep_vba=True,保留宏相关内容
book = openpyxl.load_workbook("openwithpy_V2.xlsm", keep_vba=True)
sheet = book.active

sheet['A6'].value = 'Run_Code'

# 直接保存为xlsm格式,此时文件会保留宏容器
book.save('openwithpy_V3.xlsm')

触发宏的注意事项

  • 确保你的Excel文件中存在对应的触发宏(比如Worksheet_Change事件),当A6单元格值改变时触发执行
  • 打开保存后的.xlsm文件时,需要在Excel中启用宏(通常在文件打开时的安全提示中选择启用内容)
  • openpyxl仅能保留和修改单元格内容,无法直接执行宏,宏的执行依赖Excel自身的VBA运行环境

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 00:22:02