Excel VBA宏废弃

时间:2019-01-21 17:10:32

标签: excel vba web-scraping

我想使用VBA宏将网页(https://weather.gc.ca/warnings/index_e.html)复制到excel电子表格中-我要复制的是该部分中存在一个以“位置”,“警告”,“监视”,“语句”开头的表格

每次写东西都会将其复制到

前几行是给我的:

第一个问题是当它说WindWind警告时...我正在寻找它要复制它,因为它只是在网站上说“风”,“降雨”,“特殊天气”等……不是全部。

我正在使用的脚本如下:

Option Explicit
Sub Web_Table_Option_One()
    Dim xml    As Object
    Dim html   As Object
    Dim objTable As Object
    Dim result As String
    Dim lRow As Long
    Dim lngTable As Long
    Dim lngRow As Long
    Dim lngCol As Long
    Dim ActRw As Long
    Set xml = CreateObject("MSXML2.XMLHTTP.6.0")

     ThisWorkbook.Sheets("Sheet2").Cells.ClearContents
    With xml
        .Open "GET", "https://weather.gc.ca/warnings/index_e.html", False
        .send
    End With
    result = xml.responseText
    Set html = CreateObject("htmlfile")
    html.body.innerHTML = result
    Set objTable = html.getElementsByTagName("Table")
    For lngTable = 0 To objTable.Length - 1
        For lngRow = 0 To objTable(lngTable).Rows.Length - 1
            For lngCol = 0 To objTable(lngTable).Rows(lngRow).Cells.Length - 1
                ThisWorkbook.Sheets("Sheet2").Cells(ActRw + lngRow + 1, lngCol + 1) = objTable(lngTable).Rows(lngRow).Cells(lngCol).innerText
            Next lngCol
        Next lngRow
        ActRw = ActRw + objTable(lngTable).Rows.Length + 1
    Next lngTable
End Sub

1 个答案:

答案 0 :(得分:0)

这似乎对我有用,但是,如评论中所述,考虑使用API​​。

这种方法找到表格,将其复制到剪贴板,然后一次性粘贴整个表格。

git log master..newbranch