VBA运行时错误424排查:多工作表复制保存代码报错
解决VBA运行时错误424:复制多工作表到新工作簿
错误原因
运行时错误424(需要对象)的根源在于:
ThisWorkbook.Worksheets(Array(...)).Copy执行后会生成一个包含指定工作表的新工作簿,该方法不返回Worksheet对象,无法赋值给Worksheet类型的变量sourceWs,类型不匹配导致报错。- 原代码中后续重复调用
sourceWs.Copy属于逻辑错误,因为sourceWs并未被正确初始化。
修正后的代码
以下是实现需求的正确代码,同时优化了逻辑(直接操作新工作簿对象,避免依赖ActiveWorkbook的不确定性):
Option Explicit Sub CopySheetsAndSave() Dim newWb As Workbook Dim savePath As String ' 复制指定工作表到新工作簿,并将新工作簿赋值给变量 ThisWorkbook.Worksheets(Array("400", "410", "420", "430", "450", "490", "491", "499", "425", "442")).Copy Set newWb = ActiveWorkbook ' 设置保存路径(建议补充具体用户名,例如 "C:\Users\YourName\") savePath = "C:\Users\" ' 保存并关闭新工作簿 With newWb .SaveAs Filename:=savePath & "name YTD.xlsx", FileFormat:=xlOpenXMLWorkbook .Close SaveChanges:=False End With End Sub
额外注意事项
- 保存路径
C:\Users\通常需要补充具体用户名(如C:\Users\张三\),否则可能因权限问题无法保存。 - 如果目标路径已存在同名文件,
SaveAs会弹出覆盖提示,若需自动覆盖,可添加Application.DisplayAlerts = False(操作后记得恢复为True)。
内容的提问来源于stack exchange,提问作者Diana
相关产品推荐
相关产品推荐

