![](/img/trans.png)
[英]Excel VBA. Copy data from multiple workbooks and paste in one workbook same worksheet
[英]Excel VBA - copy multiple columns from 2 workbooks into 1 workbook
我有兩個工作簿,這些工作簿具有要復制的多個列中的數據,並放入包含此宏的新工作簿中。 基本上,我希望能夠打開當前工作簿“ z”,運行宏,並使數據從其他兩個現有工作簿移入/復制。
我一直在這里搜索,並從不同的帖子中尋找不同的想法,並認為我已經很清楚了,但是在運行此代碼時遇到了“運行時錯誤1004”。 錯誤發生在第一行y.Range行,我還沒有弄清楚為什么。
我已經成功地能夠從“ x”工作簿中提取數據,但不能從“ y”中提取數據。
我是VBA的新手,所以我們將不勝感激。
謝謝,
Sub SellPrice()
Dim x As Worksheet, y As Worksheet, z As Worksheet, LastRow&
Workbooks.Open ("C:\Users\tsmith\Desktop\SellPrice\PRODUCT.XLS")
Workbooks.Open ("C:\Users\tsmith\Desktop\SellPrice\GrossProfit.xls")
Set x = Workbooks("PRODUCT.XLS").Worksheets("ProductFile")
Set y = Workbooks("GrossProfit.xls").Worksheets("Sellprice")
Set z = Workbooks("SellPriceMacro.xlsm").Worksheets("Sheet1")
LastRow = x.Cells.SpecialCells(xlCellTypeLastCell).Row
x.Range("B4:B" & LastRow).Copy z.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
x.Range("C4:C" & LastRow).Copy z.Cells(Rows.Count, "B").End(xlUp).Offset(1, 0)
x.Range("K4:K" & LastRow).Copy z.Cells(Rows.Count, "C").End(xlUp).Offset(1, 0)
LastRow = y.Cells.SpecialCells(xlCellTypeLastCell).Row
y.Range("B2:B" & LastRow).Copy z.Cells(Rows.Count, "E").End(x1Up).Offset(1, 0)
y.Range("C2:C" & LastRow).Copy z.Cells(Rows.Count, "F").End(x1Up).Offset(1, 0)
y.Range("D2:D" & LastRow).Copy z.Cells(Rows.Count, "G").End(x1Up).Offset(1, 0)
y.Range("H2:H" & LastRow).Copy z.Cells(Rows.Count, "H").End(x1Up).Offset(1, 0)
Application.CutCopyMode = False
End Sub
看看在使用Range()
之前如何放置工作表? ( y.Range(...)
-你需要做的,任何時候你用Cells()
Rows.Count
和Columns.Count
(和其他范圍)。 否則,它將查看ActiveSheet是什么,然后使用它。 當您將非活動工作表與活動工作表混合在一起時,會出現錯誤。
Sub SellPrice()
Dim x As Worksheet, y As Worksheet, z As Worksheet, LastRow&
Workbooks.Open ("C:\Users\tsmith\Desktop\SellPrice\PRODUCT.XLS")
Workbooks.Open ("C:\Users\tsmith\Desktop\SellPrice\GrossProfit.xls")
Set x = Workbooks("PRODUCT.XLS").Worksheets("ProductFile")
Set y = Workbooks("GrossProfit.xls").Worksheets("Sellprice")
Set z = Workbooks("SellPriceMacro.xlsm").Worksheets("Sheet1")
LastRow = x.Cells.SpecialCells(xlCellTypeLastCell).Row
x.Range("B4:B" & LastRow).Copy z.Cells(z.Rows.Count, "A").End(xlUp).Offset(1, 0)
x.Range("C4:C" & LastRow).Copy z.Cells(z.Rows.Count, "B").End(xlUp).Offset(1, 0)
x.Range("K4:K" & LastRow).Copy z.Cells(z.Rows.Count, "C").End(xlUp).Offset(1, 0)
LastRow = y.Cells.SpecialCells(xlCellTypeLastCell).Row
y.Range("B2:B" & LastRow).Copy z.Cells(z.Rows.Count, "E").End(xlUp).Offset(1, 0)
y.Range("C2:C" & LastRow).Copy z.Cells(z.Rows.Count, "F").End(xlUp).Offset(1, 0)
y.Range("D2:D" & LastRow).Copy z.Cells(z.Rows.Count, "G").End(xlUp).Offset(1, 0)
y.Range("H2:H" & LastRow).Copy z.Cells(z.Rows.Count, "H").End(xlUp).Offset(1, 0)
Application.CutCopyMode = False
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.