Vba 如何单击页面中的所有链接,一个接一个地返回?

Vba 如何单击页面中的所有链接,一个接一个地返回?,vba,hyperlink,back,permission-denied,Vba,Hyperlink,Back,Permission Denied,我在第二个循环的If条件上有一个权限被拒绝的错误 我点击第一个url,它打开,我返回,我想点击这个页面中的第二个url,但出现了错误 Dim fourdoc As HTMLDocument Set fourdoc = objIE.document Dim t As Long, i As Long Dim delement As MSHTML.HTMLInputElement Dim delements As MSHTML.IHTMLElementCollection Set delement

我在第二个循环的If条件上有一个权限被拒绝的错误

我点击第一个url,它打开,我返回,我想点击这个页面中的第二个url,但出现了错误

Dim fourdoc As HTMLDocument
Set fourdoc = objIE.document

Dim t As Long, i As Long

Dim delement As MSHTML.HTMLInputElement
Dim delements As MSHTML.IHTMLElementCollection
Set delements = fourdoc.getElementsByTagName("a")

For Each delement In delements
    Do While objIE.Busy Or objIE.readyState <> 4
        DoEvents
    Loop

    '' error permission denied there second time loop for''
    If delement.ClassName = "dialogUrl aImg" Then

        Do While objIE.Busy Or objIE.readyState <> 4
            DoEvents
        Loop
        delement.Click
        Do While objIE.Busy Or objIE.readyState <> 4
            DoEvents
        Loop
        Set fourdoc = objIE.document
        'here do your stuff within the new url
        objIE.GoBack
        Do While objIE.Busy Or objIE.readyState <> 4
            DoEvents
        Loop
        Set fourdoc = objIE.document
        Do While objIE.Busy Or objIE.readyState <> 4
            DoEvents
        Loop

    End If
Next

End With

End Sub
Dim fourdoc作为HTMLDocument
Set fourdoc=objIE.document
我没有那么长,我也一样长
将删除项设置为MSHTML.HTMLInputElement
将删除项设置为MSHTML.IHTMLElementCollection
Set delements=fourdoc.getElementsByTagName(“a”)
对于删除中的每个删除
在objIE.Busy或objIE.readyState 4时执行
多芬特
环
“”错误拒绝了“”的第二次循环
如果delelement.ClassName=“dialogUrl aImg”,则
在objIE.Busy或objIE.readyState 4时执行
多芬特
环
删除。单击
在objIE.Busy或objIE.readyState 4时执行
多芬特
环
Set fourdoc=objIE.document
'在新url中执行您的操作
戈巴克
在objIE.Busy或objIE.readyState 4时执行
多芬特
环
Set fourdoc=objIE.document
在objIE.Busy或objIE.readyState 4时执行
多芬特
环
如果结束
下一个
以
端接头

经过24小时的思考,我找到了解决方案:

Dim fourdoc As HTMLDocument
Set fourdoc = objIE.document

Dim i As Integer
Dim t As Integer

'Dim delement As MSHTML.IHTMLElement
Dim delements As Object
Set delements = fourdoc.getElementsByClassName("dialogUrl aImg")
t = delements.Length
Debug.Print t

For i = 0 To t - 1
    '''''''''''''''''''''''''''''
    Do While objIE.Busy Or objIE.readyState <> 4
        DoEvents
    Loop
    ''''''''''''''''''''''''''''
    Set fourdoc = objIE.document
    Set delements = fourdoc.getElementsByClassName("dialogUrl aImg")
    '''''''''''''''''''''''''''''
    Do While objIE.Busy Or objIE.readyState <> 4
        DoEvents
    Loop
    ''''''''''''''''''''''''''''
    delements(i).Click
    '''''''''''''''''''''''''''''
    Do While objIE.Busy Or objIE.readyState <> 4
        DoEvents
    Loop
    ''''''''''''''''''''''''''''
    objIE.GoBack
    '''''''''''''''''''''''''''''
    Do While objIE.Busy Or objIE.readyState <> 4
        DoEvents
    Loop
    '''''''''''''''''''''''''''''
Next i
Dim fourdoc作为HTMLDocument
Set fourdoc=objIE.document
作为整数的Dim i
作为整数的Dim t
'Dim delement作为MSHTML.ihtmlement
作为对象的Dim DELENTS
Set delements=fourdoc.getElementsByClassName(“dialogUrl aImg”)
t=删除。长度
调试。打印t
对于i=0到t-1
'''''''''''''''''''''''''''''
在objIE.Busy或objIE.readyState 4时执行
多芬特
环
''''''''''''''''''''''''''''
Set fourdoc=objIE.document
Set delements=fourdoc.getElementsByClassName(“dialogUrl aImg”)
'''''''''''''''''''''''''''''
在objIE.Busy或objIE.readyState 4时执行
多芬特
环
''''''''''''''''''''''''''''
删除(i)。单击
'''''''''''''''''''''''''''''
在objIE.Busy或objIE.readyState 4时执行
多芬特
环
''''''''''''''''''''''''''''
戈巴克
'''''''''''''''''''''''''''''
在objIE.Busy或objIE.readyState 4时执行
多芬特
环
'''''''''''''''''''''''''''''
接下来我

我认为您需要以不同的方式处理它,不确定删除是否仍然适用,尽管原来的
fourdoc
不会是同一页。但不是100%。一旦您从包含
delements
引用的元素的页面导航开,这些引用就不再有效。在第二步中,您需要再次获取引用集合,并计算类名上的第二个匹配项,然后单击该元素。等等,谢谢,但我是VBA的新手。。。我不太明白。在这种情况下,你能给我一个快速的代码修正plz吗?非常感谢你的帮助!我尝试了几种使用I整数(I=I+1)的解决方案,但它不起作用,删除(I)。单击“生成错误…”。。。。