Web Query和错误处理程序所需的循环

时间:2015-10-26 19:22:37

标签: excel vba web-services excel-vba excel-2010

我有MAC ID列表。我试图找到所有供应商的详细信息。我试过一个,但我需要它直到A列结束(我提到的所有MAC ID)。如果找不到,那么只需跳过它就必须移到下一个循环并粘贴到下面。我做了一个。

td, th {
    padding: 5px;
    border: 1px solid;
}

1 个答案:

答案 0 :(得分:0)

我会谦虚地建议您放弃.QueryTables支持MSXML2.XMLHTTP对象进行网页抓取。在VBA的检索网络数据的工具中没有更快更清洁的东西。

  

此代码要求您通过VBE的工具►参考命令将 Microsoft HTML对象库添加到项目中。

Sub retrieveMAC()
    Dim htmlBDY As New HTMLDocument
    Dim m As String, u As String, rw As Long, iTD As Long, ws As Worksheet

    Set ws = ActiveSheet

    With ws
        For rw = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
            m = UCase(Replace(Left$(.Cells(rw, 1).Value2, 8), Chr(45), vbNullString))
            u = "http://www.coffer.com/mac_find/?string=" & m
            With CreateObject("MSXML2.XMLHTTP")
                On Error Resume Next
                .Open "GET", u, False
                .Send

                If .Status <> 200 Then
                    Debug.Print .Status
                    GoTo CleanUp
                End If

                htmlBDY.body.innerHTML = vbNullString
                htmlBDY.body.innerHTML = .responseText
                With htmlBDY
                    For iTD = 0 To (.getElementsByTagName("td").Length - 1)
                        With .getElementsByTagName("td")(iTD)
                            If UCase(.innerText) = m Then
                                ws.Cells(rw, 9) = .NextSibling.innerText
                                Exit For
                            End If
                        End With
                    Next iTD
                End With

            End With
        Next rw
    End With
CleanUp:
    Set htmlBDY = Nothing

End Sub