首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >迭代IE导航问题

迭代IE导航问题
EN

Stack Overflow用户
提问于 2019-11-07 04:25:43
回答 1查看 30关注 0票数 1

我正在尝试从DLA中检索大约500个CAGE代码的属性,并将它们记录在我的电子表格中。我已经能够让它在一次迭代中工作,但是在第二次迭代中,得到错误消息"method navigate of object iwebbrowser2 failed“。

注意:除非你之前已经打开网站并且没有关闭浏览器(你需要接受条款和条件),否则代码不会工作。

单元格B2 = https://cage.dla.mil/Search/Results?q=07187&page=1单元格B3 = https://cage.dla.mil/Search/Results?q=00198&page=1

代码语言:javascript
复制
Sub NSCM2()

'Initialize
Dim IE As Object
Dim CAGE As String
Dim rowNeeded As String
Dim i As Integer
Dim sDD0 As String
Dim sDD1 As String
Dim sDD2 As String
Dim sDD3 As String
Dim sDD4 As String
Dim Doc As HTMLDocument

'Create IE Object
Set IE = CreateObject("INTERNETEXPLORER.APPLICATION")

'Loop for All Codes
For i = 1 To 10

  'Retrieve CAGE Code
  rowNeeded = CStr(i + 1)
  CAGE = Range("B" & rowNeeded).Value

'Navigate to Cage Code general Page
IE.navigate CAGE

  'Wait
  Do
    DoEvents
    Loop Until IE.readyState = 4
    Application.Wait (Now + TimeValue("0:00:03"))

  'Follow link to details page
  For Each ele In IE.document.getElementsByTagName("a")
      If InStr(ele.innerText, "Details") > 0 Then ele.Click
  Next

  'Wait
  Do
    DoEvents
    Loop Until IE.readyState = 4
    Application.Wait (Now + TimeValue("0:00:03"))

  'Pull needed values
  Set Doc = IE.document

  sDD0 = Doc.getElementsByTagName("span")(11).innerText
  sDD1 = Doc.getElementsByTagName("span")(15).innerText
  sDD2 = Doc.getElementsByTagName("span")(17).innerText
  sDD3 = Doc.getElementsByTagName("span")(19).innerText
  sDD4 = Doc.getElementsByTagName("span")(20).innerText

  'Close IE
  IE.Quit

  'Insert URL
  Range("F" & rowNeeded) = sDD0

  'Insert Address, comma separated
  If sDD1 = "" And sDD2 = "" And sDD3 = "" Then
    Range("G" & rowNeeded) = sDD4
    ElseIf sDD1 = "" And sDD2 = "" Then
    Range("G" & rowNeeded) = sDD3 & ", " & sDD4
    ElseIf sDD1 = "" And sDD3 = "" Then
    Range("G" & rowNeeded) = sDD2 & ", " & sDD4
    ElseIf sDD1 = "" Then
    Range("G" & rowNeeded) = sDD2 & "," & sDD3 & ", " & sDD4
    Else
    Range("G" & rowNeeded) = sDD1 & ", " & sDD2 & ", " & sDD3 & ", " & sDD4
    End If

  'Insert Address Check
  Range("H" & rowNeeded) = sDD1 & ";" & sDD2 & ";" & sDD3 & ";" & sDD4

Next i

End Sub
EN

回答 1

Stack Overflow用户

发布于 2019-11-07 04:45:46

第一次执行循环时,调用

代码语言:javascript
复制
IE.Quit

因此,您的循环将在第二次迭代中失败

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58737982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档