Я бы сначала попробовал эту небольшую модификацию, чтобы точно получить responseBody
промежуточной страницы (только один раз):
Public Function getHTTP(ByVal url As String) As String
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", url, False: .send
Debug.print StrConv(.responseBody, vbUnicode):getHTTP = ""
End With
End Function
И затем я скопировал бы ответ из Immediate Window
и используйте следующий адаптированный код:
Public Function getHTTP(ByVal url As String) As String
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", url, False: .send
Do While StrConv(.responseBody, vbUnicode) = "the copied text from Immediate Window"
DoEvents
Loop
getHTTP = StrConv(.responseBody, vbUnicode)
End With
End Function
Или, если ответ слишком длинный, используйте Left("the text in discussion", 10) = "Whatever x"
Отредактировано: попробуйте преобразовать исходную функцию следующим образом, чтобы включить аутентификация:
Public Function getHTTP(ByVal url As String) As String
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", url, False: .Send
.setRequestHeader "Authorization", "Basic " & Base64Encode(Your_User & ":" & password)
getHTTP = StrConv(.responseBody, vbUnicode)
End With
End Function