[英]Run Time Error '1004': Paste Method Of worksheet Class Failed error
[英]Run time error '1004': Copy method of worksheet class failed
我想按工作表名称拆分工作簿,但如果在拆分5张纸后抛出上述错误,但我在工作簿中有20张纸。 我使用了下面的代码,并且错误发生在xWs.copy上。
请帮助我修复代码中的错误。 提前致谢。
Sub Splitbook()
'Updateby20140612
Dim xPath As String
xPath = Application.ActiveWorkbook.Path
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Each xWs In ThisWorkbook.Sheets
xWs.Copy
Application.ActiveWorkbook.SaveAs Filename:=xPath & "\" & xWs.Name & ".xlsx"
Application.ActiveWorkbook.Close False
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
我相信您的队列中有一个隐藏的工作表。 在下面的代码中,我存储了原始的Worksheet.Visible属性值( XlSheetVisibility Enumeration ),然后使该工作表可见,并最终恢复了原始的可视性状态。 如果开始就已经可见,则没有错误。
我从不建议您在Workbook.SaveAs操作中包括文件扩展名。 实际上,我建议有意省略它,并允许FileFormat参数和XlFileFormat枚举提供正确的文件扩展名。
Sub Splitbook()
Dim vis As Long, xPath As String, xWs As Worksheet
xPath = Application.ActiveWorkbook.Path
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Each xWs In ThisWorkbook.Sheets
vis = xWs.Visible
xWs.Visible = xlSheetVisible
xWs.Copy
Application.ActiveWorkbook.SaveAs Filename:=xPath & "\" & xWs.Name, _
FileFormat:=xlOpenXMLWorkbook
Application.ActiveWorkbook.Close False
xWs.Visible = vis
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
如果要跳过不可见的工作表,请添加一个条件,如果xWs.Visible属性不是xlSheetVisible ,则不执行“复制,另存为”操作。
如果工作表代码表中有代码(例如, Worksheet_Change事件宏),由于您必须为False的Application.DisplayAlerts ,它将被丢弃而无需确认。
您正在拆分的工作簿似乎已被激活,并且由于它包含宏,因此无法保存为xlsx。
尝试For Each xWs In ThisWorkbook.Sheets
之前和循环Application.EnableEvents = True
之前添加Application.EnableEvents = False
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.