我有两个工作簿,我想要复制多列中的数据并将其放入包含此宏的新工作簿中 . 基本上我希望能够打开当前工作簿“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
1 回答
在使用
Range()
之前了解如何放置工作表? (y.Range(...)
) - 您需要在使用Cells()
,Rows.Count
和Columns.Count
(以及其他范围)时执行此操作 . 否则,'s going to look to whatever the ActiveSheet is, and use that. When you mix inactive sheets with active sheets, you'将收到错误 .