VBA新增工作表报Runtime error 1004 Add方法失败如何解决
VBA新增工作表触发1004报错解决方案
报错信息:runtime error 1004 method add of object sheets failed
报错触发原因与对应修复方法
- 工作簿结构被保护:如果打开的目标工作簿开启了结构保护,会禁止新增工作表。可先执行解除保护操作,有设置保护密码的话补充密码参数即可:
ActiveWorkbook.Unprotect Password:="你的工作簿保护密码" - 目标工作表名已存在:代码中指定的新表名
Global OHS RA Form如果已经在当前工作簿中存在,重命名步骤会触发报错。需要先判断同名表是否存在,存在的话可先删除旧表,或者给新表加后缀区分。 - 工作簿为只读状态:如果目标文件被其他程序占用,或是文件属性设置为只读,无法修改文件内容。打开文件时显式指定可写模式即可:
Workbooks.Open Filename:=MyFile, ReadOnly:=False - 工作表数量达上限:若打开的是.xls格式的旧版Excel文件,最多仅支持255个工作表,数量满额后无法新增,可先删除无用工作表,或是将文件转存为.xlsx格式后再操作。
优化后可直接使用的代码
Do While MyFile <> "" ' 以可写模式打开目标文件 Workbooks.Open Filename:=MyFile, ReadOnly:=False ' 解除工作簿结构保护(有密码则在括号内补充 Password:="你的密码") ActiveWorkbook.Unprotect ' 检查是否存在同名工作表,存在则删除 Dim sh As Object, wsExists As Boolean wsExists = False For Each sh In ActiveWorkbook.Sheets If sh.Name = "Global OHS RA Form" Then wsExists = True ' 关闭删除提示弹窗 Application.DisplayAlerts = False sh.Delete Application.DisplayAlerts = True Exit For End If Next ' 新增并重命名工作表 Set ws = ActiveWorkbook.Sheets.Add(Before:=ActiveWorkbook.Sheets(1)) ws.Name = "Global OHS RA Form" ' 此处补充你后续的业务逻辑代码、以及文件保存关闭逻辑 ' ActiveWorkbook.Save ' ActiveWorkbook.Close Loop
内容的提问来源于stack exchange,提问作者Vibhuti
相关产品推荐
相关产品推荐

