繁体   English   中英

Excel VBA Internet Explorer 出现错误 462

[英]Excel VBA Error 462 With Internet Explorer

我有这个 function:

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

它应该做的是遍历我使用 function GetData()获得的 href,导航页面,获取一些数据并移至下一个。

这适用于第一个链接,但随后我收到错误 462:

远程服务器不存在或不可用。

错误在这一行:

ieNewPage.navigate CStr(TableRow.href)

我该怎么解决这个问题?

有一篇关于这个错误的文章: Excel 自动化第二次代码运行失败,你可以检查一下。 错误的原因是:

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 不会释放此引用。 当代码运行不止一次时,此错误引用会干扰自动化代码。

我认为发生错误是因为您没有第二次调用Set of ieNewPage 您可以尝试将Set ieNewPage = New InternetExplorer放入循环中,如下所示:

...    
Set TableRows = GetData()    
For Each TableRow In TableRows
    Set ieNewPage = New InternetExplorer
    ieNewPage.navigate CStr(TableRow.href)
    ...
Next
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM