【发布时间】:2022-01-14 14:53:56
【问题描述】:
我现在第一次遇到错误
对象“_Worksheet”的“复制”方法失败
我听说这是一个很常见的错误,但我无法找到解决方案。当我搜索槽SO时,我发现了很多关于
对象的“范围”失败-错误。
这个错误是由工作站的内存限制引起的还是软件相关的错误?
有人想解决这个问题吗?
如果我感兴趣的是我的 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)
是错误的原因。
【问题讨论】:
-
您的代码不会对我产生任何错误。我可以创建工作簿并复制工作表,所以肯定还有别的东西。 Myabe 受保护的工作簿本身的任何工作表?您是否尝试过使用 F8 进行调试并检查它是否在第一次循环或特定工作表时失败?
-
你可以试试
After:=wb.Worksheets(wb.Worksheets.Count)。Sheet也可以参考Charts,可能会报错。 -
如果您尝试添加不基于任何模板的普通工作簿会怎样?
Set wb = Workbooks.Add另外,什么版本的 Excel? Windows 还是 Mac? -
我唯一能想到的是
Worksheets是一个集合,它是基于0的。因此你可以试试After:=wb.Worksheets(wb.Worksheets.Count-1) -
源文件,是XLS吗? 所有单元格都已格式化是什么意思?