Убедитесь, что вы ссылаетесь на MSXML, вставляете модуль класса и в него следующий код. Делайте DownloadToFile только в том случае, если функция возвращает True, должно работать.
Public Function DoLoginByPost(URL As String, strUser As String, strPassword As String) As Boolean
Dim xHttp As MSXML2.XMLHTTP
Dim sTICKER As String
sTICKER = "user=" & strUser & "&pass=" & strPassword & "&logintype=login&pid=4&login=Login"
'Check this and edit accordingly by e.g. using the web developer tools in your browser when logging in regularly.
'You should be able to identify what form data is being sent when loggin on.
Set xHttp = New MSXML2.XMLHTTP
xHttp.Open "POST", URL
xHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xHttp.send sTICKER
Do Until xHttp.READYSTATE = 4
DoEvents
Loop
If xHttp.Status = 200 Then
DoLoginByPost = True
Else: DoLoginByPost = False
End If
End Function
'After receiving "TRUE", alter your original code to:
Set xHttp = New MSXML2.XMLHTTP
xHttp.Open "Get", UrlFileName, False
xHttp.send
Do Until xHttp.ReadyState = 4
DoEvents
Loop
Open DestinationFileName For Binary As #1
Put #1, , xHttp.responseBody
Close #1