我第一次面对这个错误:
对象“_Worksheet”的方法“Copy”失败。
据说这是一个相当常见的错误,但我无法找到解决方案。当我在SO上搜索时,我发现了许多关于
对象“Range”的错误。
这个错误是由工作站的内存限制造成的还是与软件相关的错误?
有没有人想出解决这个问题的办法?
如果有兴趣,这是我的VBA代码:
Private Sub CommandButton1_Click()
MsgBox "Message"
Dim wb As Workbook
Set wb = Workbooks.Add(xlWBATWorksheet)
wb.Sheets(1).Name = "deletethissheet"
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Copy After:=wb.Sheets(wb.Sheets.Count)
Next
For Each ws In wb.Worksheets
ws.UsedRange.Formula = ws.UsedRange.Value
Dim sh As Shape
For Each sh In ws.Shapes
sh.Delete
Next
Next
For Each Link In wb.LinkSources(xlLinkTypeExcelLinks)
wb.BreakLink Name:=Link, Type:=xlLinkTypeExcelLinks
Next
wb.Sheets("deletethissheet").Delete
wb.SaveAs Replace(ThisWorkbook.FullName, ".xlsm", "_" & Format(Date, "yyyymmdd") & ".xlsx"), xlOpenXMLWorkbook
wb.Close SaveChanges:=False
End Sub
ws.Copy After:=wb.Sheets(wb.Sheets.Count)
是导致错误的原因。
After:=wb.Worksheets(wb.Worksheets.Count)
。Sheet
也可能指代Charts
,这可能会导致错误。 - MGPSet wb = Workbooks.Add
。另外,Excel的哪个版本?Windows还是Mac? - Foxfire And Burns And BurnsWorksheets
是一个集合,而且是以0为基础。因此,您可以尝试使用After:=wb.Worksheets(wb.Worksheets.Count-1)
。 - MGP