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

时间:2017-12-13 06:33:45

标签: excel vba excel-vba

我发现了不同的运行时错误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

尽管名称正确,但最后一行中的所有Workbooks对象似乎都没有工作。你能找到我的错误吗?

1 个答案:

答案 0 :(得分:2)

当您使用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方法。