Проблема в том, что вы всегда пишете в Range("a1")
при использовании этой строки
.Worksheets(2).Range("a1").Resize(UBound(vOut, 1), UBound(vOut, 2)) = vOut
Вместо этого сначала найдите следующую свободную строку
Dim NextFreeRow As Long
NextFreeRow = .Worksheets(2).Cells(.Worksheets(2).Rows.Count, "A").End(xlUp).Row + 1
, а затем используйте эту строку в качестве начальной point
.Worksheets(2).Cells(NextFreeRow, "A").Resize(UBound(vOut, 1), UBound(vOut, 2)) = vOut
На самом деле вы можете захотеть взглянуть на метод WorksheetFunction.Transpose . Это было бы намного проще перенести данные.