Excel VBA:运行时错误1004调用工作簿

我发现了不同的运行时错误1004个问题,但没有一个是完全合适的。

当使用工作簿时(最后一行),我得到错误1004“应用程序定义或对象定义的错误”。

Dim mainWB As Workbook Dim mainWS As Worksheet Set mainWB = ActiveWorkbook Dim wb As Workbook Dim WBname As String For Each wb In Workbooks If Left(wb.Name, 4) = "D_SO" And Len(wb.Name) > 30 Then WBname = wb.Name Exit For End If Next mainWB.Sheets(1).Range(Cells(1, 1), Cells(1600, 300)).Value = Workbooks(WBname).Sheets(1).Range(Cells(1, 1), Cells(1600, 300)).Value 

尽pipe名称是正确的,但我的最后一行中的工作簿对象似乎没有工作。 你能find我的错误吗?

当您使用该types的Range object引用时: Range(LeftTopCell, RightBottomCell)您必须关心实际上在括号内的内容。

在你的情况下,你总是有Activesheet cells ,这不是你想要的。 因此,您必须以这种方式完整引用单元格:

 mainWB.Sheets(1).Range(mainWB.Sheets(1).Cells(1, 1), _ mainWB.Sheets(1).Cells(1600, 300)).Value = Workbooks(WBname).Sheets(1).Range(Workbooks(WBname).Sheets(1).Cells(1, 1), _ Workbooks(WBname).Sheets(1).Cells(1600, 300)).Value 

为了使它更短,你可以考虑使用Range.Copy方法。