VBA For循环遇到问题

时间:2019-01-15 17:59:44

标签: javascript excel vba internet-explorer

因此,这是我尝试循环浏览并单击链接的网页上生成的JavaScript表。链接打开一个弹出窗口,然后VBA单击弹出窗口中的一个按钮,该按钮将更新并关闭窗口。它非常适合第一个弹出窗口,但是当它碰到最后一行“下一个链接”时,它会返回到For,但是“ link”的变量为空,但是还有2个链接,并且会抛出错误,因为链接=空。

我进行了另一个简单的循环,该循环仅循环浏览allLinks中的链接,以确保它可以看到它们并且确实起作用,因此可以加载它们。

感谢您的帮助,感谢大家的宝贵时间。

哦和Application.Wait是临时的,当我让这个人正常运行时,我将它们替换为Do While

单击按钮后,看起来链接失去了属性 wd.document.getElementById("btnAddItem").Click

Set allLinks = appIE.document.getElementById("tblItems").getElementsByTagName("a")
For Each link In allLinks
    appIE.Navigate link
    Application.Wait (Now + TimeValue("0:00:03"))

    For Each wd In CreateObject("Shell.Application").Windows
        If wd = "Internet Explorer" Then
            If InStr(UCase(wd.document.Title), "ITEM") <> 0 Then
                Application.Wait (Now + TimeValue("0:00:01"))
                wd.document.getElementById("btnAddItem").Click
                Application.Wait (Now + TimeValue("0:00:01"))

                Exit For

            End If
        End If
    Next wd
Next link

我只需要注释退出,因为它退出了两个循环

Set allLinks = appIE.document.getElementById("tblItems").getElementsByTagName("a")
For Each link In allLinks
    appIE.Navigate link
    Application.Wait (Now + TimeValue("0:00:03"))

    For Each wd In CreateObject("Shell.Application").Windows
        If wd = "Internet Explorer" Then
            If InStr(UCase(wd.document.Title), "ITEM") <> 0 Then
                Application.Wait (Now + TimeValue("0:00:01"))
                wd.document.getElementById("btnAddItem").Click
                Application.Wait (Now + TimeValue("0:00:01"))

                'Exit For

            End If
        End If
    Next wd
Next link

0 个答案:

没有答案