VBA в HTML: Раскрывающееся меню «Редактировать»

#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")