Excel VBA复制模板工作表报错:仅首次运行正常,后续提示‘Object Required’
问题原因与解决办法
为什么会触发“Object Required”错误?
Worksheets.Copy方法不会返回新创建的工作表对象,你原写法Set wksNew = ActiveWorkbook.Worksheets("Base").Copy(...)是错误的——第一次运行看似正常只是偶然,后续循环里这个赋值会失败,导致wksNew变成空对象(Nothing),再执行wksNew.Name = ...就会触发错误。
正确修改后的代码
复制模板后,直接引用最后一个工作表(因为Copy指定After:=Sheets(Sheets.Count),新表会被放在所有工作表的最后):
' 复制Base模板到工作表末尾 ActiveWorkbook.Worksheets("Base").Copy After:=Sheets(Sheets.Count) ' 获取刚复制完成的工作表 Set wksNew = ActiveWorkbook.Sheets(Sheets.Count) ' 给新工作表重命名 wksNew.Name = rngCell.Value
额外注意点
- 确保名为“Base”的模板工作表处于可见状态,隐藏状态下复制可能出现异常。
- 提前处理重名问题:如果
rngCell.Value对应的工作表名称已经存在,执行重命名会报错,可以添加判断逻辑避免冲突。
内容的提问来源于stack exchange,提问作者Interactive
相关产品推荐
相关产品推荐

