我一直在使用以下VBA代码获得各种错误(最近的错误是运行时错误'70':权限被拒绝)。基本上,代码/工作表连接到客户的Intranet IE数据库,搜索客户活动并将任何活动导入工作表(最终将使用活动进行报告)。这是我遇到错误的地方,这取决于我正在搜索的时间长度我有时会有多个活动页面需要点击“下一步”按钮并从每个页面拉取数据,直到不再有“下一个” “按钮(没有更多活动)。我设置的循环将从第一页拉出,单击“下一步”按钮,然后有时从第二页拉出,但随后它会跳错。所以我认为错误与页面的加载有关,但我添加了暂停以允许加载但仍然遇到相同的错误。我真的坚持这一点,不幸的是,在我能解决这个问题之前,我无法继续推进项目。
以下是代码段:
Dim TDelements As IHTMLElementCollection
Dim TDelement As HTMLTableCell
Dim r As Long, i As Long
Dim e As Object
Set TDelements = IE.document.getElementsByTagName("tr")
r = 0
For i = 1 To 1
Application.Wait Now + TimeValue("00:00:03")
For Each TDelement In TDelements
If TDelement.className = "searchActivityResultsContent" Then
Sheet1.Range("E1").Offset(r, 0).Value = TDelement.ChildNodes(8).innerText
r = r + 1
ElseIf TDelement.className = "searchActivityResultsContent" Then
Sheet1.Range("E1").Offset(r, 0).Value = TDelement.ChildNodes(8).innerText
r = r + 1
End If
Next
Application.Wait Now + TimeValue("00:00:02")
Set elems = IE.document.getElementsByTagName("input")
For Each e In elems
If e.Value = "Next Results" Then
e.Click
i = 0
Exit For
End If
Next e
Next i
Do Until Not IE.Busy And IE.readyState = 4
DoEvents
Loop
IE.Quit
End Sub
非常感谢任何帮助/建议。谢谢!
答案 0 :(得分:0)
查看您的代码:
'getting any TD elements here
Set TDelements = IE.document.getElementsByTagName("tr")
'waiting here....
Application.Wait Now + TimeValue("00:00:03")
'now trying to use items in TDelements...
For Each TDelement In TDelements
'...
Next
您是否在等待使用Application.Wait
时加载页面?
如果是,那么您应该知道TDelements
不是动态 - 它将不会在加载新的TD元素时自行更新:它只是存在的元素的快照当你打电话给getElementsByTagName("tr")
时。所以在等待之后调用。