簡體   English   中英

Excel VBA-將2個工作簿中的多個列復制到1個工作簿中

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM