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

问题描述 投票:0回答:1

我在第二个循环的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
vba hyperlink back permission-denied
1个回答
1
投票

经过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
© www.soinside.com 2019 - 2024. All rights reserved.