使用Excel VBA循环访问URL列表

我现在对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 

和URL的列表 在这里输入图像说明

我的目标是:

  • 循环访问每个URL(在IE中插入URL并继续前进,而无需打开新的标签)
  • 从HTML元素获取每个URL的项目状态
  • 联邦快递:交付(td class =“status”)
  • UPS:交付(id =“tt_spStatus”)
  • USPS:抵达USPS设施(class =“info-text first”)
  • 完成循环,并保存为一个csv,如果可能的话(我已经这样做了,所以我只是张贴我有问题的代码部分)。

我的理解是,我必须为每个不同的url编写一个不同的if语句,因为它们都具有不同的HTML标签以用于其传递状态。 循环很简单,但通过网页循环对我来说是新的。 代码一直在抛出我的错误,无论我做出什么样的改变。

IE对象打开,但然后Excel命中错误,代码停止运行。 在这里输入图像说明

好的,我开始用正确的语法让你的代码进行,我将编辑这个答案的进一步代码

 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 

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