Excel VBA Internet Explorer 错误 462
Excel VBA Error 462 With Internet Explorer
我有这个功能:
Sub CreateDatabase()
Dim ieNewPage As InternetExplorer, TableRows As Object, TableRow As Object
Dim TableRowsSpecificOwner As Object, TableRowSpecificOwner As Object, TagNeeded As Object
Set TableRows = GetData()
Set ieNewPage = New InternetExplorer
For Each TableRow In TableRows
ieNewPage.navigate CStr(TableRow.href)
Do While ieNewPage.ReadyState <> 4
DoEvents
Loop
ieNewPage.Visible = True
Set TableRowsSpecificOwner = ieNewPage.document.querySelectorAll("tr[class='puce_texte']")
For Each TableRowSpecificOwner In TableRowsSpecificOwner
If Excel.Application.IfError(Excel.Application.Search("France", TableRowSpecificOwner.innerText), -1) > 0 Then
Debug.Print TableRow.innerText
Debug.Print TableRowSpecificOwner.getElementsByTagName("a")(1).innerText
End If
Next
Excel.Application.Wait (Now + TimeValue("0:00:02"))
Next
End Sub
它应该做的是遍历我使用函数 GetData()
获得的 href,导航页面,获取一些数据并移至下一个。
这适用于第一个 link,但随后我收到错误 462:
The remote server does not exists or is unavailable.
错误在这一行:
ieNewPage.navigate CStr(TableRow.href)
我到底该如何解决这个问题?
关于这个错误有一篇文章:Excel automation fails second time code runs,你可以看看。错误原因是:
Visual Basic has established a reference to Excel because of a line of code that calls an Excel object, method, or property without qualifying the element with an Excel object variable. Visual Basic does not release this reference until you end the program. This errant reference interferes with automation code when the code is run more than one time.
我认为错误发生是因为你没有第二次调用ieNewPage
的Set
。您可以尝试将 Set ieNewPage = New InternetExplorer
放入循环中,如下所示:
...
Set TableRows = GetData()
For Each TableRow In TableRows
Set ieNewPage = New InternetExplorer
ieNewPage.navigate CStr(TableRow.href)
...
Next
...
我有这个功能:
Sub CreateDatabase()
Dim ieNewPage As InternetExplorer, TableRows As Object, TableRow As Object
Dim TableRowsSpecificOwner As Object, TableRowSpecificOwner As Object, TagNeeded As Object
Set TableRows = GetData()
Set ieNewPage = New InternetExplorer
For Each TableRow In TableRows
ieNewPage.navigate CStr(TableRow.href)
Do While ieNewPage.ReadyState <> 4
DoEvents
Loop
ieNewPage.Visible = True
Set TableRowsSpecificOwner = ieNewPage.document.querySelectorAll("tr[class='puce_texte']")
For Each TableRowSpecificOwner In TableRowsSpecificOwner
If Excel.Application.IfError(Excel.Application.Search("France", TableRowSpecificOwner.innerText), -1) > 0 Then
Debug.Print TableRow.innerText
Debug.Print TableRowSpecificOwner.getElementsByTagName("a")(1).innerText
End If
Next
Excel.Application.Wait (Now + TimeValue("0:00:02"))
Next
End Sub
它应该做的是遍历我使用函数 GetData()
获得的 href,导航页面,获取一些数据并移至下一个。
这适用于第一个 link,但随后我收到错误 462:
The remote server does not exists or is unavailable.
错误在这一行:
ieNewPage.navigate CStr(TableRow.href)
我到底该如何解决这个问题?
关于这个错误有一篇文章:Excel automation fails second time code runs,你可以看看。错误原因是:
Visual Basic has established a reference to Excel because of a line of code that calls an Excel object, method, or property without qualifying the element with an Excel object variable. Visual Basic does not release this reference until you end the program. This errant reference interferes with automation code when the code is run more than one time.
我认为错误发生是因为你没有第二次调用ieNewPage
的Set
。您可以尝试将 Set ieNewPage = New InternetExplorer
放入循环中,如下所示:
...
Set TableRows = GetData()
For Each TableRow In TableRows
Set ieNewPage = New InternetExplorer
ieNewPage.navigate CStr(TableRow.href)
...
Next
...