我有这个功能:
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)
我该怎么解决呢?
关于此错误的文章:Excel自动化第二次代码运行失败,您可以检查一下。错误的原因是:
Visual Basic已建立对Excel的引用,因为有一行代码调用了Excel对象,方法或属性,而没有用Excel对象变量限定元素。在结束程序之前,Visual Basic不会释放此引用。当代码多次运行时,该错误的引用会干扰自动化代码。
我想是因为你没有调用错误发生Set
的ieNewPage
第二次。您可以尝试Set ieNewPage = New InternetExplorer
像这样放入循环:
...
Set TableRows = GetData()
For Each TableRow In TableRows
Set ieNewPage = New InternetExplorer
ieNewPage.navigate CStr(TableRow.href)
...
Next
...
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句