Насколько я понимаю, вы просто хотите скопировать значения из некоторых диапазонов в разных файлах в последующие строки в другом файле.
Чтобы скопировать диапазон ячеек в VBA, вам не нужно выбирать их. Лучше использовать метод Range.Copy.
В вашем случае вы, вероятно, захотите сделать что-то вроде:
wbk.Worksheets(1).Range("C11:J11").Copy _
destination:=ThisWorkbook.Worksheets(1).Range("D4")
Кстати: Cells(3, 1).Offset(1, 0)
совпадает с: Cells(4,1)
.
Чтобы вставить каждый раз в следующий ряд, вы можете просто посчитать их. За пределами цикла while объявите переменную. Например: Dim i as Integer
. Затем в каждой итерации увеличиваем его: i = i + 1
. Тогда вы можете скопировать так:
wbk.Worksheets(1).Range("C11:J11").Copy _
destination:=ThisWorkbook.Worksheets(1).Range( Chr(Asc("D")+i) & ":4")