#html #excel #vba #automation #dropdown
Вопрос:
Я создал простой скрипт, который принимает значения из Excel для обновления веб-формы.
Вот код:
Sub AutofillDefects()
Dim IE As Object
Set IE = GetObject("new:{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}")
IE.Visible = True
IE.navigate "https://share.amazon.com/sites/iQuality - Compliance Quality Hub/Lists/Appeals QA/Item/newifs.aspx?List=d543d1cd-5a02-44dd-979c-b16eeeeb9533amp;Source=https://share.amazon.com/sites/iQuality%20-%20Compliance%20Quality%20Hub/Lists/Appeals%20QA/AllItems.aspxamp;RootFolder=amp;Web=e53ba52a-0a1a-4ce5-9b10-1b7eacd99b79"
Do While IE.Busy
Application.Wait DateAdd("s", 1, Now)
Loop
IE.Document.getElementById("ctl00_ctl33_g_77798cac_dd9e_4abd_855e_86f279f1ef7c_FormControl0_V1_I1_T1").Value = ThisWorkbook.Sheets("Audits").Range("AC12")
IE.Document.getElementById("ctl00_ctl33_g_77798cac_dd9e_4abd_855e_86f279f1ef7c_FormControl0_V1_I1_T2").Value = ThisWorkbook.Sheets("Audits").Range("AD12")
End Sub
До сих пор этот скрипт отлично работает при вводе значений в текстовые поля.
Проблема возникает при взаимодействии с выпадающим окном, в котором я перепробовал практически все.
Я вижу, что решение состоит в том, чтобы вызвать событие изменения и выбрать индекс, но, похоже, я не могу найти способ!!!
Если бы было решение, есть ли способ выбрать опцию в раскрывающемся списке на основе совпадающих значений вместо индекса?
Вот исходный код html:
Комментарии:
1. Можете ли вы уточнить, что вы подразумеваете под «взаимодействием с раскрывающимся окном»? Вы имеете в виду, что ваш код VBA может успешно задать значение текстового поля, но он не изменяет выбранную опцию в элементе управления SELECT, когда вы выполняете тот же getElementById(«выпадающий список»). значение = значение ячейки?
2. Кроме того, мне интересно, увидите ли вы другой результат, если у вас действительно есть .Значение в конце вашего . Ведомости(«Аудиты»). Диапазон(«AC12»)? Я знаю это. Значение по сути является предполагаемым значением по умолчанию, но просто любопытно, увидите ли вы другое поведение?
Ответ №1:
Не берите в голову,
Вот решение моей проблемы:
Вот код, который работает для выпадающих окон:
IE.document.getElementByID("ctl00_ctl33_g_77798cac_dd9e_4abd_855e_86f279f1ef7c_FormControl0_V1_I1_D5").Focus
IE.document.getElementByID("ctl00_ctl33_g_77798cac_dd9e_4abd_855e_86f279f1ef7c_FormControl0_V1_I1_D5").selectedIndex = 2
IE.document.getElementByID("ctl00_ctl33_g_77798cac_dd9e_4abd_855e_86f279f1ef7c_FormControl0_V1_I1_D5").FireEvent ("onchange")