X-Rate Excel VBA извлечения данных - PullRequest
0 голосов
/ 07 ноября 2018

Я довольно новичок в Excel VBA, и у меня возникают проблемы при извлечении данных с этого веб-сайта: https://www.x -rates.com / исторические /? От = CAD & сумма = 1 & дата = 2018-11-05, Я хотел бы автоматизировать этот процесс, чтобы я мог получать эти ставки каждый месяц. Это насколько я получил и заблудился отсюда:

'запустить новую подпрограмму под названием SearchBot

Sub SearchBot ()

'dimension (declare or set aside memory for) our variables
Dim objIE As InternetExplorer 'special object variable representing the IE browser
Dim aEle As HTMLLinkElement 'special object variable for an <a> (link) element
Dim y As Integer 'integer variable we'll use as a counter
Dim result As String 'string variable that will hold our result link

'initiating a new instance of Internet Explorer and asigning it to objIE
Set objIE = New InternetExplorer

'make IE browser visible (False would allow IE to run in the background)
objIE.Visible = True

'navigate IE to this web page (a pretty neat search engine really)
objIE.navigate "https://www.x-rates.com/table/?from=CAD&amount=1"

Любая помощь будет оценена!

1 Ответ

0 голосов
/ 07 ноября 2018

Вы можете использовать следующее. Он использует XMLHTTP в качестве более быстрого метода поиска. Объединяет вчерашнюю дату в URL, чтобы получить последние оценки. Алфавитная таблица выбирается по имени класса и позиции индекса.

Option Explicit
Public Sub GetTable()
    Dim sResponse As String, html As HTMLDocument, ws As Worksheet, clipboard As Object

    Set ws = ThisWorkbook.Worksheets("Sheet1")

    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", "https://www.x-rates.com/historical/?from=CAD&amount=1&date=" & Format$(Date - 1, "yyyy-mm-dd"), False
        .setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
        .send
        sResponse = StrConv(.responseBody, vbUnicode)
    End With

    Set clipboard = GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    Set html = New HTMLDocument

    With html
        .body.innerHTML = sResponse
        clipboard.SetText .querySelectorAll(".ratesTable").item(1).outerHTML
        clipboard.PutInClipboard
    End With     
    ws.Cells(1, 1).PasteSpecial 
End Sub

Ссылки (VBE> Инструменты> Ссылки):

  1. Библиотека объектов Microsoft HTML
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...