2015-10-26 26 views
1

我的MAC ID的列表循環。我試圖找到所有供應商的詳細信息。我嘗試了一個,但我需要它,直到列A(所有我提到的MAC ID)的末尾。如果找不到,那麼只需跳過,它必須移動到下一個循環並粘貼到下面。我做了一個。所需的Web查詢和錯誤處理程序

Sub FindMACTest() 

    With ActiveSheet.QueryTables.Add(Connection:= _ 
     "URL;http://www.coffer.com/mac_find/?string=" & Range("A1"), Destination:=Range _ 
     ("$I$1")) 
     .FieldNames = True 
     .RowNumbers = False 
     .FillAdjacentFormulas = False 
     .PreserveFormatting = True 
     .RefreshOnFileOpen = False 
     .BackgroundQuery = True 
     .RefreshStyle = xlInsertDeleteCells 
     .SavePassword = False 
     .SaveData = True 
     .AdjustColumnWidth = True 
     .RefreshPeriod = 0 
     .WebSelectionType = xlSpecifiedTables 
     .WebFormatting = xlWebFormattingNone 
     .WebTables = "1" 
     .WebPreFormattedTextToColumns = True 
     .WebConsecutiveDelimitersAsOne = True 
     .WebSingleBlockTextImport = False 
     .WebDisableDateRecognition = False 
     .WebDisableRedirections = False 
     .Refresh BackgroundQuery:=False 
    End With 
End Sub 
+0

我希望幾MAC ID我可以提供:F4-F5-A5-DF-DD-92 A4-17-31-EA-D4-11 B4-52-7D-E6-D3 -EB 68-9C-5E-7B-9D-EE 74-F0-6D-46-0F-E8 0C-14-20-8D-FE-C9 C0-CB-38-4C-25-5B B0-EE-45-07-42-CA B8-76-3F-E4-F9-93 C4-17-FE-D5-94-11 8C-3A-E3-95-9F-C2 D0 -B3-3F-DE-A0-E9 24 FD-52-4E-60-F1 E2-D7-4A-51-93-71 D0-C1-B1-DD-33-A6 20-54-76-1C-F3-D4 00-26-C7-C6-68-0C 00-73-8D-02-CD-95 E0-2A-82-11-C2-96 0C -71-5D-B1-9A-CE –

回答

0

我會謙卑地建議你贊成MSXML2.XMLHTTP對象爲你的網頁抓取的放棄.QueryTables。 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 
+0

太感謝你了......只要有簡單的問題...我需要全表的所有標題和信息。[前綴\t供應商 C0CB38 \t鴻海精密工業有限公司, Ltd.]我不希望它必須在它所屬的mac id的同一行中。一個一個下面...這就夠了 –

+0

有人請幫助我。我需要整個表格被下載 –

+0

乾草!我很抱歉,如果它真的傷害了你......我需要下載整個表......我感到內疚,你覺得不好...因爲以前你幫了我很多。我會盡力刪除我的帳戶,我希望那會幫助你......我要請你傷害再次抱歉:(:( –