我对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
答案 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