对象"_Worksheet"的方法"复制"失败



我现在第一次遇到错误

对象"_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)是错误的原因。

这是一个一年前的帖子,但万一其他人在这里找到他们的路,我也收到了这个错误并解决了它。我试图在隐藏的工作表上使用 .copy 函数。一旦我取消隐藏工作表,宏就可以正常运行。Worksheets("Sheet1").visible = True通过在 .复制代码并在代码末尾Worksheets("Sheet1").visible = False它为我修复了错误。

尽管进行了深入研究,但我找不到有关此错误的任何详细信息。解决方案对我来说非常简单,是手动将所有内容复制到新工作表上并从那里启动宏。此错误可能是由资源有限或单元坏引起的。

VBA 本身有效。如果有人遇到这种问题,重建工作表可能会起作用。

这很老了,但我也在官方 MS 文档中发现了一个可能的原因:

源和目标必须位于同一 Excel 中。应用程序实例, 否则将引发运行时错误"1004":没有这样的接口 支持,如果使用了类似 Sheet1.Copy objWb.Sheets(1( 的东西,或者 运行时错误"1004":工作表类的复制方法失败,如果 类似于ThisWorkbook.Worksheets("Sheet1"(。复制对象Wb.Sheets(1( 被使用了。

来源: https://learn.microsoft.com/en-us/office/vba/api/Excel.Worksheet.Copy

这绝对是我的情况的原因。希望它也能帮助你!

编辑:相反,我只是将Range.CurrentRegion从A1开始复制到另一个工作表,这似乎可以在多个应用程序实例中工作。样机示例:

Dim rg As Range
Dim xl As Application
Dim wb As Workbook

Set xl = New Excel.Application
Set wb = xl.Workbooks.Open("C:foo.xlsx")
Set rg = wb.Worksheets(1).Range("A1").CurrentRegion

rg.Copy ThisWorkbook.Worksheets(1).Range("A1")

最新更新