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

Excel VBA:调用工作簿时出现运行时错误1004,vba,excel,Vba,Excel,我发现了不同的运行时错误1004个问题,但没有一个是完全合适的 使用工作簿(最后一行)时,我收到一个错误1004“应用程序定义或对象定义错误” 即使名称正确,最后一行中的工作簿对象似乎都没有工作。你能找到我的错误吗?当你使用那种类型的范围对象引用时:范围(LeftTopCell,RightBottomCell)你必须注意括号内的内容 在您的情况下,总是有Activesheet单元格,这不是您想要的。因此,您必须以这种方式完全引用单元格: mainWB.Sheets(1).Range(mainWB

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

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


即使名称正确,最后一行中的工作簿对象似乎都没有工作。你能找到我的错误吗?

当你使用那种类型的
范围对象
引用时:
范围(LeftTopCell,RightBottomCell)
你必须注意括号内的内容

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

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
方法。

当您使用该类型的
Range对象
引用时:
Range(LeftTopCell,RightBottomCell)
您必须注意括号内的实际内容

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

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
方法。

不会想到的,谢谢!我有范围。但是复制仍然会给我同样的问题,因为我想从非活动表复制,我的1600和300实际上是可变的(我不能只写“A1:CZ1600”),我不会想到的,谢谢!我有范围。但复制仍然会给我同样的问题,因为我想从非活动表复制,我的1600和300实际上是可变的(我不能只写“A1:CZ1600”)