Возникли проблемы с циклом VBA For - PullRequest
0 голосов
/ 15 января 2019

Итак, на веб-странице создается таблица JavaScript, которую я пытаюсь просмотреть и щелкнуть ссылки. Ссылки открывают всплывающее окно, а затем VBA нажимает кнопку во всплывающем окне, которое обновляет и закрывает окно. Он отлично работает для первого всплывающего окна, но когда он попадает в последнюю строку «Следующая ссылка», он возвращается к For, но переменная для «ссылки» пуста, но есть еще 2 ссылки и выдает ошибку, потому что link = пустой.

Я сделал еще один простой цикл, который просто циклически перебирает ссылки в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...