Excel VBA报错:保存无宏工作簿触发Run-Time error '1004'
解决Excel VBA保存无宏工作簿的1004错误
错误原因
之前正常运行的代码突然报错,大概率是当前工作簿里残留了VB项目组件或XLM旧版宏表,加上系统更新后Excel的格式校验更严格,导致直接保存无宏格式时触发限制。
排查&手动修复步骤
- 检查XLM宏表:按
Ctrl+F11打开宏表编辑器,若看到非必要的宏表,直接删除。 - 清理VB项目残留:按
Alt+F11打开VBA编辑器,在工程资源管理器里右键VBAProject,选择查看对象浏览器,检查是否有隐藏模块/类模块,取消隐藏后删除无用的组件。 - 移除隐藏控件:切换到「开发工具」选项卡,开启「设计模式」,检查工作表里的隐藏ActiveX控件,删除不需要的。
代码修复方案
如果不想每次手动清理,改成复制有用内容到新工作簿再保存,彻底规避原工作簿的VB残留问题:
Dim newWB As Workbook Dim ws As Worksheet ' 创建空白无宏工作簿 Set newWB = Workbooks.Add(xlWBATWorksheet) ' 复制原工作簿的可见工作表到新工作簿 For Each ws In ActiveWorkbook.Worksheets If ws.Visible = xlSheetVisible Then ws.Copy After:=newWB.Sheets(newWB.Sheets.Count) End If Next ws ' 删除新工作簿默认的空白表 Application.DisplayAlerts = False newWB.Sheets(1).Delete Application.DisplayAlerts = True ' 保存新工作簿 strFile = ActiveWorkbook.Path & "\BorstDailyKPI.xlsx" newWB.SaveAs Filename:=strFile, FileFormat:=xlOpenXMLWorkbook ' 可选:关闭新工作簿 newWB.Close SaveChanges:=False
内容的提问来源于stack exchange,提问作者JLGAZ
相关产品推荐
相关产品推荐

