Как добавить элементы, отображаемые по действию щелчка, в список элементов в Excel VBA для HTML-веб-формы - PullRequest
2 голосов
/ 26 июня 2019

Я пытаюсь настроить форму Excel, которая автоматически заполняет веб-форму HTML.Я выяснил, как использовать VBA, чтобы получить элементы и циклически проходить через них, чтобы добавить значения.Моя проблема связана с текстовым полем, которое открывается щелчком флажка.Я не могу установить флажок в Excel, пока не получу элементы для формы.

Я посмотрел HTML, и похоже, что поле в некоторой степени скрыто, когда формасначала загружен, поскольку идентификатор и все можно найти в дереве только после того, как флажок установлен.Проблема в том, что это поле не будет отображаться в списке элементов VBA, что бы я ни пытался.Я попытался повторно выполнить команду Set, и получил ошибку при этом.Я не уверен, как обновить список элементов в VBA, чтобы включить новое поле ввода.

Я использовал команду Set, чтобы получить все элементы

Set frm = ie.document.getElementByID("form1")

Это нормально, но я не могу использовать эту же команду, чтобы попытаться переустановить список элементов.Я получаю ошибку времени выполнения 438 (объект не поддерживает это свойство или метод)

Я пытался создать вариант с именем frm2, но я получаю ту же ошибку

Sub formFill()
    Dim ie      As Object
    Dim frm     As Variant
    Dim element As Variant

    Set ie = CreateObject("InternetExplorer.Application")
    ie.navigate "THIS IS THE URL"
    While ie.readyState <> 4: DoEvents: Wend

    'Get form by ID
    Set frm = ie.document.getElementByID("form1")

    ie.Visible = True

    For Each element In frm.elements

        Select Case element.Name
            Case "fv_RRFC$chkOtherModel"
                element.Checked = True
                element.FireEvent ("OnClick")
                frm.getElementByID("fv_RRFC_txtOtherModel")(0).Value = "test model" 'I tried using the command here, but it didn't work
            Case "fv_RRFC$txtRRFC_PROGRAM"
                element.Value = "test"
            Case "fv_RRFC$txtOtherModel"
                element.Value = "test model"
                'My attempt to add it to the Select Case. Not surprised this didn't work, as the for Each loop uses the list it had before
        End Select
    Next
End Sub

Я ожидал, что смогу перезагрузить список элементов для взаимодействия и заполнить только что открывшееся поле, но мне не повезло найти способ сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...