将工作表复制到另一个工作簿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