Посмотрите на приведенный ниже пример:
Option Explicit
Sub Test()
Dim s As String
Dim a() As String
Dim q As Range
Dim i As Long
With CreateObject("MSXML2.XMLHTTP")
.Open "POST", "http://www.cbr.ru/hd_base/dv/?P1=4", False
.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
.Send "UniDbQuery.Posted=True&UniDbQuery.P1=4&UniDbQuery.FromDate=13.01.2013&UniDbQuery.ToDate=12.12.2017"
s = .ResponseText
End With
a = Split(s, "<td>")
ThisWorkbook.Sheets(1).Cells.Delete
Set q = ThisWorkbook.Sheets(1).Cells(1, 1)
For i = 1 To UBound(a) Step 2
q.Value = CDate(Split(a(i), "</td>", 2)(0))
Set q = q.Offset(0, 1)
q.Value = CDbl(Replace(Split(a(i + 1), "</td>", 2)(0), " ", ""))
Set q = q.Offset(1, -1)
Next
ThisWorkbook.Sheets(1).Columns.AutoFit
End Sub
Вывод для меня выглядит следующим образом: