我有以下问题。我写了一个宏,将一个工作表从一个工作簿复制到另一个工作簿。但是,在复制目的地的行上,我收到了“应用程序定义或对象定义的错误”我用另一个新工作集测试了代码并且它可以工作,但不能用于我试图实现它的工作簿。
Dim x As Workbook
Set x = Workbooks.Open("S:\INM\MME9EG\Zahlenwerk MMA2EG Equities\DHN\DHN_Europa.xls")
Workbooks("DHN_Europa.xls").Sheets("Bericht_799026").Range("B4:IV150000").Copy _
ThisWorkbook.Sheets("DHN Europe 799026").Range("A1")
答案 0 :(得分:2)
试试这个:
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").PasteSpecial xlPasteAll
当然,您需要确保存在具有这些名称的工作表
答案 1 :(得分:2)
使用工作簿变量的全部意义在于
替换Workbooks("DHN_Europa.xls")
但变量名称,
这里x
(顺便说一句,尝试使用更明确的变量名称,它会更容易!;)
由于这是一个xls
文件,您可能只有大约65,000行,但您尝试复制的内容不止于此!
Dim x As Workbook
Set x = Workbooks.Open("S:\INM\MME9EG\Zahlenwerk MMA2EG Equities\DHN\DHN_Europa.xls")
x.Sheets("Bericht_799026").Range("B4:IV60000").Copy _
ThisWorkbook.Sheets("DHN Europe 799026").Range("A1")
答案 2 :(得分:2)
它可能是Excel版本问题,其中2007年以前的版本有65k左右的最大行数
尝试
With Workbooks.Open("S:\INM\MME9EG\Zahlenwerk MMA2EG Equities\DHN\DHN_Europa.xls").Sheets("Bericht_799026")
Intersect(.UsedRange, .Range("B4:IV4").Resize(.Rows.count - 3)).Copy _
ThisWorkbook.Sheets("DHN Europe 799026").Range("A1")
End With