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
Выше приведены значения от столбца N, начиная со строки 2 и до последнего значения в столбцеN,
Вам нужно найти последнюю ячейку с данными в столбце B, равном Worksheets("Template")
, затем сместить на одну строку вниз и изменить размер цели в соответствии с размером вариантного массива, который вы использовали для сбора исходных данных.
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