Чтобы выбрать «Закрыто» из этого раскрывающегося меню с помощью макроса:
<div class = "modal ui-dialog-content ui-widget-content" id = "pausingModal" scrolltop = "0" scrollleft = "0" style = "width: auto; min-height: 0px; height: auto;">
<label>Please specify the reason</label>
<div class = "row">
<div class = "select2-container select2 reason select2-container-active select2-dropdown-open" id = "s2id_autogen2" style = "width: 100%"><a href = "javascript:void(0)" class = "select2-choice select2-default" tabindex = "-1"> <span class = "select2-chosen" id = "select2-chosen-3">Select a reason</span><abbr class = "select2-search-choice-close"></abbr> <span class = "select2-arrow" role = "presentation"><b role = "presentation"></b></span></a><label for = "s2id_autogen3" class = "select2-offscreen"></label><input class = "select2-focusser select2-offscreen" type = "text" aria-haspopup = "true" role = "button" aria-labelledby = "select2-chosen-3" id = "s2id_autogen3" disabled = ""></div><select class = "select2 reason select2-offscreen" style = "width: 100%" tabindex = "-1" title = "">
<option></option>
<optgroup label = "Related">
<option data-pause-type = "hard_pause" data-show-text-area = "false" value = "1">
Closed
</option>Я пробовал разные решения, пытался получить все имена параметров, затем выбрать внутренний текст, но параметр не выбирается в меню:
For Each obj In objIE.Document.getElementsByClassName("select2 reason").getElementsByTagName("option")
If obj.innerText = "Closed" Then
obj.Selected = True
End If
Next
For Each obj In objIE.Document.getElementsByClassName("select2 reason").getElementsByTagName("option")
If obj.Value = "1" Then
obj.Selected = True
End If
Next
Я пробовал с событием onchange:
Dim o
For Each o In objIE.Options
If o.Value = "1" Then
o.Selected = True
Exit For
End If
Next
Dim objEvent
Set objEvent = objIE.Document.createEvent("HTMLEvents")
objEvent.initEvent "change", False, True
objIE.dispatchEvent objEvent
Обновлено: оказывается, в коде был javascript, поэтому я изменил его следующим образом:
For Each obj In objIE.Document.getElementsByTagName("span")
If obj.id = "select2-chosen-3" Then
obj.Focus
obj.innerText = "Business Closed Permanently"
Exit For
End If
Next
Он заполняет меню, но когда я нажимаю на него, кажется, что ничего не было выбрано.
Затем я попытался добавить:
For Each obj In objIE.Document.getElementsByTagName("a")
If obj.className = "select2-choice select2-default" Then
obj.Click
Exit For
End If
Next
Но это не работает.
Спасибо за ваш ответ. Я пишу макрос для доступа к этому сайту и автоматизации командных задач. Вы хотите сказать, что это слишком сложно сделать с VBA?
Вы можете попробовать установить значение самого выбора
автоматизировать? Это какой-то нюанс по автомату?
Вы можете попробовать следующий синтаксис objIE.Document..getElementById("pausingModal").selectedIndex = 1objIE.Document..getElementById("pausingModal").FireEvent ("onchange")
Спасибо за ответ, я пробовал, но все равно не повезло, ничего не выбирается.
Я отредактировал свой пост предложенным вами решением.
Это внутренний URL? Сможете ли вы собрать весь цикл тегов опций до тех пор, пока не будет найден текст «Закрыто». Нажмите?
Да, это внутренний URL. Я пробовал, но ничего не выбрано. Для каждого объекта в objIE.Document.getElementsByTagName ("option") Если obj.innerText = "Closed" Тогда obj.Click
Помогло бы я, если бы я добавил больше HTML-кода?
Присутствует ли Closed в innerText, т.е. когда вы зацикливаете, он найден?
Да найдено. С помощью getElementsByTagName ("option") с innertext = "Closed" я могу записать его на листе. Но щелкнуть не удалось.
Есть ли какие-либо связанные события, которые вы можете запустить, или jscript, который вы можете выполнить? Я не вижу ничего из вышеперечисленного, но подумал, что упомяну.
На самом деле я неправильно понял HTML-код, там был элемент javascript. Я отредактировал свой пост. Затем я написал: For Each obj In objIE.Document.getElementsByTagName("span") If obj.id = "select2-chosen-3" Then obj.Focus obj.innerText = "Closed" Наконец-то он заполняет мое меню! Но затем, когда код нажимает ОК, похоже, что ничего не было выбрано. Есть ли у вас какие-нибудь идеи?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Почему вы используете VBA вместо JS?