Excel VBA错误462和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

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

这适用于第一个链接,但随后出现错误462:

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

错误在此行上:

ieNewPage.navigate CStr(TableRow.href)

我该怎么解决呢?

Yu Zhou

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

Visual Basic已建立对Excel的引用,因为有一行代码调用了Excel对象,方法或属性,而没有用Excel对象变量限定元素。在结束程序之前,Visual Basic不会释放此引用。当代码多次运行时,该错误的引用会干扰自动化代码。

我想是因为你没有调用错误发生SetieNewPage第二次。您可以尝试Set ieNewPage = New InternetExplorer像这样放入循环:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章