Использование MSXML в скрипте VBA для извлечения данных сайта - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть следующий код из http://dailydoseofexcel.com/archives/2011/03/08/get-data-from-website-that-requires-a-login/#comment-60553

Sub GetTable()
Dim xml As Object ' MSXML2.XMLHTTP60
Dim htmlDoc As Object ' MSHTML.HTMLDocument
Dim htmlBody As Object ' MSHTML.HTMLBody
Dim ieTable As Object
Dim clip As DataObject

Set xml = GetMSXML

With xml
      .Open "POST", "https://web.site", False
      .send "username=myname&password=mypassword"""
End With
With xml
      .Open "POST", "https://web.site/anotherpage", False
End With
Set htmlDoc = CreateHTMLDoc
Set htmlBody = htmlDoc.Body
htmlBody.innerHTML = xml.responseText

Set ieTable = htmlBody.all.Item("report")

    'copy the tables html to the clipboard and paste to teh sheet
  If Not ieTable Is Nothing Then
        Set clip = New DataObject
        clip.SetText "<html>" & ieTable.outerHTML & "</html>"
        clip.PutInClipboard
        Range("A1").Select
        ActiveSheet.PasteSpecial "Unicode Text"""
    End If

End Sub

Function CreateHTMLDoc() As Object ' MSHTML.HTMLDocument
Set CreateHTMLDoc = CreateObject("htmlfile")
End Function

Function GetMSXML() As Object ' MSXML2.XMLHTTP
On Error Resume Next
  Set GetMSXML = CreateObject("MSXML2.XMLHTTP")
End Function

Используя этот код, я пытаюсь получить доступ к сайту web.site и передать ему имя пользователя и пароль для входа, прежде чем перейти на другую страницу насайт, прежде чем копировать содержимое таблицы (результатов) в лист1 рабочей книги Excel.

Я попытался отладить это с помощью f8, но без визуального браузера, который я получил бы, если бы следил за этой страницейhttp://dailydoseofexcel.com/archives/2011/03/08/get-data-from-website-that-requires-a-login/ тогда немного трудно понять, что именно происходит и где происходит сбой.

...