
[英]Excel VBA - copying sheet with charts to another workbook, error on close
[英]Copying sheet to another workbook 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
你的配方怎么了:
x.Sheets("Bericht_799026").Range("B4:IV150000").Copy _
ThisWorkbook.Sheets("DHN Europe 799026").Range("A1:IV150000").PasteSpecial
您正在使用_
指定Copy
方法的Destination
,但仍使用PasteSpecial
因此它不再是Range,因此出现错误!
另外,您正在打开一个.xls
文件,该文件是旧的 Excel格式,仅包含65,536行,并且您正在尝试复制150,000!
参见: https : //superuser.com/a/366473/505550
有很多方法可以做到这一点:
如果指定输出大小,则必须准确,以便输入和输出大小相同:
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
不要为匹配源范围和目标范围的大小而烦恼
With x.Sheets("Bericht_799026").Range("B4:IV150000")
.Value = ThisWorkbook.Sheets("DHN Europe 799026").Range("A1").Resize(.Rows.Count, .Columns.Count).Value
End With
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.