使用Excel VBA循环访问URL列表

时间:2016-01-13 15:45:10

标签: html excel vba excel-vba

我现在对Excel更加熟悉,但有一点让我感到困惑 - 如何在循环中循环访问URL。我目前的难题是我有这个包的URL列表,需要使用它的HTML获取每个页面上每个包的状态。我目前在列表中循环的是:

Sub TrackingDeliveryStatusResults()

Dim IE As Object
Dim URL As Range
Dim wb1 As Workbook, ws1 As Worksheet

Dim filterRange As Range
Dim copyRange As Range
Dim lastRow As Long

Set wb1 = Application.Workbooks.Open("\\S51\******\Folders\******\TrackingDeliveryStatus.xls")
Set ws1 = wb1.Worksheets("TrackingDeliveryStatusResults")

Set IE = New InternetExplorer

With IE
    .Visible = True
    For Each URL In Range("C2:C & lastRow")
        .Navigate URL.Value
        While .Busy Or .ReadyState <> 4: DoEvents: Wend
        MsgBox .Document.body.innerText
    Next
End With

End Sub

网址列表enter image description here

我的目标是:

  • 遍历每个网址(在IE中插入网址并继续操作而不打开新标签页)
  • 从HTML元素
  • 获取每个网址的项目状态
  • FedEx:已交付(td class =&#34; status&#34;)
  • UPS:已发送(id =&#34; tt_spStatus&#34;)
  • USPS:抵达USPS设施(等级=&#34;首先是信息文本)
  • 完成循环并尽可能保存为csv(我已经完成了,所以我只是发布代码部分我遇到了问题)。

我的理解是我必须为每个不同的URL编写不同的if语句,因为它们的传递状态都有不同的HTML标记。循环很简单,但循环浏览网页对我来说是新的。无论我做出什么改变,代码都给我带来了错误。

IE对象打开但Excel出现错误,代码停止运行。 enter image description here

1 个答案:

答案 0 :(得分:1)

好的,我会以适当的语法开始让你的代码继续下去,我将编辑这个答案以获取更多代码

Sub Sample()


Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.EnableEvents = True

Dim wsSheet As Worksheet, Rows As Long, links As Variant, IE As Object, link As Variant
Set wb = ThisWorkbook
Set wsSheet = wb.Sheets("Sheet1")

Set IE = New InternetExplorer

Rows = wsSheet.Cells(wsSheet.Rows.Count, "A").End(xlUp).Row
links = wsSheet.Range("A1:A" & Rows)

With IE
    .Visible = True
    For Each link In links
        .navigate (link)
        While .Busy Or .ReadyState <> 4: DoEvents: Wend
        MsgBox .Document.body.innerText
    Next link
End With

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub

这将让你循环我认为你有一些一般的语法问题,你可以看到我的代码中的差异,以循环通过为每个链接必须是类型对象或变体和链接我设置为变体假设它将默认为字符串