Автоматическое обновление данных в VBA

Я успешно написал VBA, чтобы очистить данные с веб-страницы.

Поскольку данные регулярно обновляются, я бы хотел, чтобы они обновлялись и в моем документе Excel.

Данные, которые я получаю, отличаются от всех перечисленных BookMaker.

Я попробовал функцию.refreshperiod.refresh для переменной HTMLRow, но по какой-то причине это не сработало

Sub Scrape()
    For x = 1 To 5
        Worksheets("links").Select
        Worksheets("links").Activate
        mystr = "https://easyodds.com/tennis/challenger/santiago-chile/928271/match-result"
        mystr = Cells(x, 1)

        Dim XMLPage As New MSXML2.XMLHTTP60
        Dim HTMLDoc As New MSHTML.HTMLDocument
        Dim HTMLOdds As MSHTML.IHTMLElement
        Dim HTMLRow As Object
        Dim HTMLCell As MSHTML.IHTMLElement

        Dim RowNum As Long, ColNum As Integer
        XMLPage.Open "GET", mystr, False
        XMLPage.send

        Dim XMLResp As MSHTML.IHTMLElement
        HTMLDoc.body.innerHTML = XMLPage.responseText
        Set HTMLOdds = HTMLDoc.getElementById("betsTable")
        Worksheets.Add
        Cells.Select
        Selection.NumberFormat = "0.00"
        Range("A1").Value = mystr
        RowNum = 
        Set HTMLRow = HTMLOdds.getElementsByTagName("tbody")
        For Each HTMLRow In HTMLOdds.getElementsByTagName("tr")
            ColNum = 1
            For Each HTMLCell In HTMLRow.getElementsByTagName("Div")
                Cells(RowNum, ColNum) = HTMLCell.innerText
                ColNum = ColNum + 1
            Next HTMLCell
            RowNum = RowNum + 1
        Next HTMLRow
    Next x
End Sub

2 ответа

Решение

Вы можете попробовать вызвать свой метод с Application.OnTime Now + TimeValue("01:00:00"), "YourMethodName", В этом примере метод вызывается один раз в час, но вы должны держать файл открытым.

В Module2 обновите код ниже:

Sub Workbook_Open()
Call Module1.Scrape
End Sub

Этот код срабатывает при открытии рабочего файла. обновите приведенный ниже код в первой строке вашей основной программы

Sub Scrape()
Application.OnTime Now + TimeValue("0:01"), "Scrape" 

он будет автоматически выполнять код каждую минуту, здесь вы можете изменить временной интервал по своему желанию. Это будет выполняться в бесконечном цикле, даже если вы закрыли свой рабочий лист.

Благодарю вас.

Другие вопросы по тегам