在工作簿之间复制数据的最佳方法是什么?我已经编写了下面的代码,用于将给定工作簿中的数据复制到“thisworkbook”。但是我遇到了一些问题,我开始认为这不是正确的方法吗?
我到底想要什么:
我有一个工作簿,其中有大量数据,我希望从该工作簿中复制一些给定范围到“thisworkbook”。复制完这些后,我想删除数据之间的所有空行
我有什么:
Application.ScreenUpdating = False
Dim wb As Workbook
Set wb = Workbooks.Open("path")
With wb
Sheets("sheet1").Range("B3:D107").Copy
End With
With ThisWorkbook.Sheets("sheet1").Range("A1")
.PasteSpecial xlPasteAll
.PasteSpecial xlPasteColumnWidths
End With
With wb
Sheets("sheet1").Range("B113:D117").Copy
End With
With ThisWorkbook.Sheets("sheet1").Range("A106")
.PasteSpecial xlPasteAll
.PasteSpecial xlPasteColumnWidths
End With
With wb
Sheets("sheet1").Range("F3:F107").Copy
End With
With ThisWorkbook.Sheets("sheet1").Range("D1")
.PasteSpecial xlPasteAll
.PasteSpecial xlPasteColumnWidths
End With
With wb
Sheets("sheet1").Range("F113:F117").Copy
End With
With ThisWorkbook.Sheets("sheet1").Range("D106")
.PasteSpecial xlPasteAll
.PasteSpecial xlPasteColumnWidths
End With
wb.Close False
On Error Resume Next
Columns("A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Application.ScreenUpdating = True
为什么我在“xlPasteColumnwidths”收到错误,是否可以提高此代码的效率?
答案 0 :(得分:0)
您在PasteSpecial操作中不能有多个枚举,您需要单独执行每个操作:
With wb
Sheets("sheet1").Range("B3:D107").Copy
End With
With ThisWorkbook.Sheets("sheet1").Range("A1")
.PasteSpecial xlPasteAll
End With
With wb
Sheets("sheet1").Range("B3:D107").Copy
End With
With ThisWorkbook.Sheets("sheet1").Range("A106")
.PasteSpecial xlPasteColumnWidths
End With
关于性能,我看不到您的代码有任何问题。当然,你可以把整张纸拿到一个数组然后写出你需要的东西,但这对于这么简单的东西来说太过分了。