Использование массивов и переменных упрощает код и ускоряет выполнение.
Sub test()
Dim a As Workbook, b As Workbook
Dim Ws As Worksheet, toWs As Worksheet
Dim x As Integer, NrCop As Integer, n As Integer
Dim i As Integer
Dim vArray As Variant
Dim vR() As Variant 'dynamic array
Set b = Workbooks.Open(Application.GetOpenFilename) 'the file that I want to past my values on
Set toWs = b.Sheets(1)
NrCop = InputBox("Quantos promotores sao?")
Set a = Workbooks.Open(Application.GetOpenFilename) 'the files I want to copy the values from
Set Ws = a.Sheets(1)
vArray = Array(4, 5, 11, 37, 48, 74, 100, 126, 152, 178, 204, 205, 209, 212, 216)
n = UBound(vArray)
ReDim vR(n)
For i = 0 To n
vR(i) = Ws.Range("d" & vArray(i))
Next i
For x = 1 To NrCop
toWs.Range("b3").Offset(0, x - 1).Resize(n + 1) = WorksheetFunction.Transpose(vR)
Next x
End Sub