VBA HTML Адресация с помощью .getElements - PullRequest
2 голосов
/ 18 февраля 2020

У меня есть следующее HTML

enter image description here

, и я пытаюсь получить выделенную дату.

Это мой код но это не работает Я получаю

"объект не поддерживает это свойство или метод":

Set sammel = HTMLDoc.getElementsByClassName("date").innerText

Вот полный код

Sub testalt()

Dim HTMLInput As MSHTML.IHTMLElement
Dim HTMLInput2 As MSHTML.IHTMLElement
Dim HTMLDoc As MSHTML.HTMLDocument
Dim HTMLButtons As MSHTML.IHTMLElementCollection
Dim ie As InternetExplorerMedium
Dim buttonsubmit As HTMLButtonElement
Dim sammel As String

Set ie = New InternetExplorerMedium
ie.Visible = True
ie.navigate "https://plm.corp.int/&showInitialResults=true&cancelLabel=Close&minRequiredChars=3&genericDelete=true&selection=multiple&txtTextSearch=e2711846&filters={%27txtTextSearch%27:[%27Equals|e2711846%27]}
Do While ie.readyState <> READYSTATE_COMPLETE
Loop

'Seite öffnen und Wert in Suche geben
Set HTMLDoc = ie.document
Set HTMLInput = HTMLDoc.getElementById("txtTextSearch")
Set HTMLInput2 = HTMLDoc.getElementById("mx_btn-search")
HTMLInput.Value = "e2711846"
HTMLInput.FireEvent ("onkeyup")
HTMLInput2.Click

''Nach neuester Version suchen

sammel = HTMLDoc.getElementsByClassName("date")(0).innerText

End Sub

Саммель остается пустым , Может ли быть проблема с моей страницей не обновляется или что-то? Потому что я открываю поиск windows, затем набираю в searchterm и ищу его. но URL остается тем же во вновь открытом окне. Это javascript штука, я думаю

1 Ответ

1 голос
/ 18 февраля 2020

Может существовать более одного тега HTML с class="date", поэтому HTMLDoc.getElementsByClassName("date") является массивом этих элементов.

Если вы предполагаете несколько элементов с class="date", вам нужно l oop через них. Или вы можете получить первый из них, используя:

Dim sammel As Object
Set sammel = HTMLDoc.getElementsByClassName("date")(0)
Debug.Print sammel.innerText

Обратите внимание, что вы можете только Set объект, но innerText возвращает строку (текст). Так что или что-то вроде вышеупомянутого или без Set

Dim sammel As String
sammel = HTMLDoc.getElementsByClassName("date")(0).innerText
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...