Я пытаюсь настроить форму 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
Я ожидал, что смогу перезагрузить список элементов для взаимодействия и заполнить только что открывшееся поле, но мне не повезло найти способ сделать это.