无法将数据从列复制到另一个工作簿

时间:2019-06-16 19:31:16

标签: excel vba

我对VBA还是很陌生,试图编写一些代码来复制所有数据,除了源工作簿中某个列的标头,然后将其粘贴到另一个工作簿中的标头的不同列中。

我目前可以使它仅复制第一个单元格。我已经读了很多东西,但是我尝试的所有事情都会导致错误

Dim details As Variant, mydata As Workbook

Details = ThisWorkbook.Worksheets("sheet1").Range("N")

Set mydata = Workbooks.Open("C:\desktop\book2.xlsx")

RowCount = mydata.Worksheets("Template").Range("B2").CurrentRegion.Rows.Count
mydata.Worksheets("template").Range("B" & RowCount) = YourRef

1 个答案:

答案 0 :(得分:1)

Details = ThisWorkbook.Worksheets("sheet1").Range("N")

VBA中没有Range("N")。您可能的意思是Range("N:N"),但如果要向下偏移一行以排除标题行,则不能使用完整的列引用。本质上,单行偏移量将试图将整个列从工作表的底部移出。

with ThisWorkbook.Worksheets("sheet1")
  Details = .range(.cells(2, "N"), .cells(.rows.count, "N").end(xlup)).value
end with

上面的代码从第2行的N列开始收集值,直到第N列的最后一个值,

您需要在Worksheets("Template")的B列中找到包含数据的最后一个单元格,然后向下偏移一行,并根据用于收集源数据的变量数组的大小来调整目标大小。

Dim details As Variant, mydata As Workbook

with ThisWorkbook.Worksheets("sheet1")
  Details = .range(.cells(2, "N"), .cells(.rows.count, "N").end(xlup)).value
end with

Set mydata = Workbooks.Open("C:\desktop\book2.xlsx")

with mydata.Worksheets("template")
  .cells(.rows.count, "B").end(xlup).offset(1, 0).resize(ubound(details, 1), ubound(details, 2)) = Details
end with