Ubuntu下用Openpyxl保存带宏.xlsx后Excel无法打开的解决求助
解决办法
1. 改存为带宏格式(.xlsm)
带宏的Excel文件标准格式是.xlsm,而非普通的.xlsx。你用keep_vba=True加载带宏文件后,若保存为.xlsx,Excel会因格式与内容不匹配(文件含VBA代码但格式不符合宏文件规范)拒绝打开,而LibreOffice兼容性更宽松所以能正常读取。修改保存代码:
wb2.save("my_new_file.xlsm")
2. 排查格式与工作表设置
如果改后缀后仍无法打开,检查以下可能的不兼容设置:
- 列宽设置:确保
ColumnDimension的宽度值在0-255之间,避免设置无效数值。 - 自定义样式:确认
NamedStyle、PatternFill等样式参数符合Excel规范,比如颜色使用标准RGB值,边框样式不使用Excel不支持的类型。 - 工作表操作:删除或新建工作表时,确保表名不包含特殊字符,长度不超过31个字符。
3. 验证原文件VBA完整性
openpyxl的keep_vba=True仅能原样保留VBA的二进制内容,无法修复损坏的宏代码。若原文件的VBA本身存在问题,保存后会导致Excel报错:
- 打开原文件,确认VBA代码可正常运行,无编译错误。
- 若不需要保留宏,直接去掉
keep_vba=True参数,保存为普通.xlsx文件即可。
内容的提问来源于stack exchange,提问作者antusystem
相关产品推荐
相关产品推荐

