VBA Excel нажмите href и заполните форму - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь получить данные с веб-сайта с помощью vba. Данные, которые мне нужны, взяты с этого сайта: https://www.uitvoeringarbeidsvoorwaardenwetgeving.nl/mozard/! Suite16.scherm1168? MSel = 145576

Я хочу, чтобы код делал, это нажимал на фиолетовую полосу с карандашом на ней таким образом появляется экран для фильтров, а затем заполняется определенный c временной интервал в фильтрах. Когда это будет сделано, я хочу получить отображаемые данные.

Я могу перейти на сайт и щелкнуть фиолетовую полосу, чтобы появился экран фильтра. но я не могу указать даты, это код, который у меня есть до сих пор:

    Dim IE As New SHDocVw.InternetExplorer
Dim HTMLDoc As MSHTML.HTMLDocument
Dim HTMLInput As MSHTML.IHTMLElement
Dim HTMLAs As MSHTML.IHTMLElementCollection
Dim HTMLA As MSHTML.IHTMLElement
Dim pastDate As MSHTML.IHTMLElement
Dim futuredate As MSHTML.IHTMLElement


IE.Visible = True
IE.Navigate "https://www.uitvoeringarbeidsvoorwaardenwetgeving.nl/mozard/!suite16.scherm1168?mGmr=66"

Do While IE.ReadyState <> READYSTATE_COMPLETE
Loop

Set HTMLDoc = IE.Document

Set HTMLAs = HTMLDoc.getElementsByTagName("a")

For Each HTMLA In HTMLAs
    'Debug.Print HTMLA.className, HTMLA.getAttribute("href"), HTMLA.getAttribute("rel"), HTMLA.innerText

    If HTMLA.getAttribute("href") = "https://www.uitvoeringarbeidsvoorwaardenwetgeving.nl/mozard/!suite16.scherm1168?mGmr=66#editmodal" Then
    HTMLA.Click
    Exit For
    End If

Next HTMLA
Do While IE.ReadyState <> 4 Or IE.Busy:
DoEvents: Loop

Set HTMLInput = HTMLDoc.getElementById("frm_FKMT_B931_542_823883_dva_id1")
HTMLInput.Value = "01-01-2020" 'THIS GIVES AN ERROR?

Последняя строка кода дает ошибку, и я не понимаю, почему ??

Это HTML код с веб-сайта, значение которого я хочу изменить:

<input name="FKMT_B931_542_823883_dva" class="datumveld form-control" id="frm_FKMT_B931_542_823883_dva_id1" type="text" pattern="(0[1-9]|1[0-9]|2[0-9]|3[01]).(0[1-9]|1[012]).[0-9]{4}">

Спасибо и извините за неудобства или плохо заданный вопрос, ребята, если есть что-то еще, что вам нужно сейчас, пожалуйста, не стесняйтесь спрашивать !

Спасибо !!

1 Ответ

1 голос
/ 26 мая 2020

Это пример заполнения первого поля даты. Идентификаторы кажутся не очень стабильными.
Осторожно: Есть шаблон для введенных дат
pattern="(0[1-9]|1[0-9]|2[0-9]|3[01]).(0[1-9]|1[012]).[0-9]{4}"

Есть несколько событий html. Я не знаю, нужно ли запускать их, чтобы диалог действительно работал.

Вы проверяли, работает ли страница в IE?

Sub OpenAndFillForm()

Dim browser As Object
Dim url As String
Dim nodeToClick As Object
Dim nodeForm As Object
Dim nodeFirstDate As Object

  url = "https://www.uitvoeringarbeidsvoorwaardenwetgeving.nl/mozard/!suite16.scherm1168?mGmr=66"

  Set browser = CreateObject("internetexplorer.application")
  browser.Visible = True
  browser.navigate url
  Do Until browser.readyState = 4: DoEvents: Loop

  Set nodeToClick = browser.document.getElementByID("tabel2").getElementsByTagName("a")(0)
  nodeToClick.Click
  Application.Wait Now + TimeValue("00:00:02")

  Set nodeForm = browser.document.getElementByID("tabel12")
  Set nodeFirstDate = nodeForm.getElementsByClassName("datumveld")(0)
  nodeFirstDate.Value = "31-12-2019"
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...