Функция VBA для выбора элемента из выпадающего списка на веб-странице - PullRequest
0 голосов
/ 01 марта 2020

Я пытаюсь открыть страницу, которая автоматически перемещается к выпадающему элементу. По сути, этот выпадающий элемент похож на встроенную закладку на веб-странице. Я хочу, чтобы он загружался / открывался на этой странице. Ничего не работает, просто открывается обычный сайт. Я НЕ знаю, как заставить его выбрать значение из выпадающего списка. Я хочу, чтобы он выбрал выпадающий список «По регионам». Это мой код:

Sub Button1_Click()

    Dim URL As String

    Dim bookMark As Object

    URL = "http://mywebpagelink"

    ActiveWorkbook.FollowHyperlink URL

    ie.navigate (URL)

    Set webpage = ie.document

    Set bookMark = webpage.getElementByTagName("select").Click

    bookMark.Selected = True

End Sub

Это код инструментов разработчика для этого выпадающего списка:

<html>
..
<select>

<option value="Document\BMO_568">Default</option>

<option value="Server\BM1O89-65">Exposure by Region</option>

</select>
..
</html>

На этом этапе все может помочь. Потому что в настоящее время он просто открывает веб-страницу, но не в закладке (раскрывающемся значении), в которой я хочу ее открыть.

1 Ответ

0 голосов
/ 01 марта 2020

Вы можете попробовать следующий макрос. Если это не сработает, нам нужна дополнительная информация о коде html или, что лучше, сообщите нам URL:

Sub Button1_Click()

  Dim url As String
  Dim browser As Object
  Dim nodeSelect As Object

  url = "http://mywebpagelink"

  'Initialize Internet Explorer, set visibility,
  'call URL and wait until page is fully loaded
  Set browser = CreateObject("internetexplorer.application")
  browser.Visible = True
  browser.navigate url
  Do Until browser.readyState = 4: DoEvents: Loop

  'Create node collection of al HTML elements with the tag name "select"
  Set nodeSelect = browser.document.getElementsByTagName("select")

  'If the needed dropdown is not the first one in the HTML
  'code, you must set the right index instead of 0
  nodeSelect(0).selectedIndex = 1

  'It is likely that the change to the page must be communicated
  'via an HTML event. This is probably the change event
   Call TriggerEvent(browser.document, nodeSelect(0), "change")
End Sub


Private Sub TriggerEvent(htmlDocument As Object, htmlElementWithEvent As Object, eventType As String)

  Dim theEvent As Object

  htmlElementWithEvent.Focus
  Set theEvent = htmlDocument.createEvent("HTMLEvents")
  theEvent.initEvent eventType, True, False
  htmlElementWithEvent.dispatchEvent theEvent
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...