将工作表复制到另一个工作簿VBA

我正在尝试使用VBA将一个工作表复制到另一个工作簿。 但是,当涉及到复制行时,我收到了应用程序定义的错误或对象定义的错误。

Dim x As Workbook Set x = Workbooks.Open("S:\INM\MME9EG\Zahlenwerk MMA2EG Equities\DHN\DHN_Europa.xls") x.Sheets("Bericht_799026").Range("B4:IV150000").Copy _ ThisWorkbook.Sheets("DHN Europe 799026").Range("A1:IV150000").PasteSpecial 

不要打扰匹配源和目标范围的大小

 With x.Sheets("Bericht_799026").Range("B4:IV150000") .Value = ThisWorkbook.Sheets("DHN Europe 799026").Range("A1").Resize(.Rows.Count, .Columns.Count).Value End With 

你的表述有什么问题:

 x.Sheets("Bericht_799026").Range("B4:IV150000").Copy _ ThisWorkbook.Sheets("DHN Europe 799026").Range("A1:IV150000").PasteSpecial 

您正在使用_指定Copy方法的Destination ,但是您使用了PasteSpecial因此它不再是范围,因此错误!

此外,您正在打开一个.xls文件,这是旧的 Excel格式,只包含65,536行,您正试图复制150,000!

请参阅: https : //superuser.com/a/366473/505550


很多方法来做到这一点:

如果指定输出大小,则必须精确,以便input和输出大小相同:

 x.Sheets("Bericht_799026").Range("B4:IV65536").Copy ThisWorkbook.Sheets("DHN Europe 799026").Range("A1:IU65533").PasteSpecial 

要么

 x.Sheets("Bericht_799026").Range("B4:IV65536").Copy _ ThisWorkbook.Sheets("DHN Europe 799026").Range("A1:IU65533") 

或者你可以指定你要粘贴的第一个单元格:

 x.Sheets("Bericht_799026").Range("B4:IV65536").Copy ThisWorkbook.Sheets("DHN Europe 799026").Range("A1:IU65533").PasteSpecial 

要么

 x.Sheets("Bericht_799026").Range("B4:IV65536").Copy _ ThisWorkbook.Sheets("DHN Europe 799026").Range("A1") 

或者最后的最好方法是:
你必须是准确的,但是传输数据要快得多(只有数据!)):

 ThisWorkbook.Sheets("DHN Europe 799026").Range("A1:IU65533").Value = _ x.Sheets("Bericht_799026").Range("B4:IV65536").Value