如何用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
相关产品推荐
相关产品推荐

