数据未从HTML表更新为Excel

时间:2018-09-05 03:09:09

标签: html excel web-scraping

我遇到以下错误,数据在网页中更新,但不在Excel中。我使用Application.OnTime刷新网页。

下面是代码

REQUEST_LOGGING_HTTP_4XX_LOG_LEVEL = logging.WARNING

The snapshot

根据快照,网站有7行,但是excel仅捕获5行。我尝试了所有可能的方法,但仍然找不到原因。我希望清除Web缓存,但是找不到引用。

1 个答案:

答案 0 :(得分:2)

数字在网站上更改。我第一次看时是6行,然后是5行,然后又是6行。

您的代码很好,但是您需要Schedule:=True而不是Schedule = True(错字?),并且真的需要循环所有表吗?您也可以Dim HTML As Object

老实说,如果结果显示出这种类型的不一致,我认为该网站还是很粗略的。

在任何给定时间获取所有行的一种简单方法是简单地复制粘贴整个表,如下所示。您可以将其与刷新代码链接起来。

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

    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", "http://register.um.edu.my/kok_kosong_bi.asp", False
        .send
        sResponse = StrConv(.responseBody, vbUnicode)
    End With

    html.body.innerHTML = sResponse
    With ThisWorkbook.Worksheets("Sheet1")
        .Cells.ClearContents
        .Cells.ClearFormats
        Set clipboard = GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
        clipboard.SetText html.getElementsByTagName("table")(3).outerHTML
        clipboard.PutInClipboard
        .Cells(1, 1).PasteSpecial
    End With 
End Sub