繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2025 STACKOOM.COM