Из VBA я пытаюсь получить доступ к ячейке «имя пользователя» с веб-страницы, чтобы я мог ввести соответствующее имя пользователя.Получение информации с HTML-страницы через VBA
Проблема в том, что в HTML-коде со страницы имеется более одного элемента с тем же именем, что и «LOGON_USERID», и я не могу понять, как получить доступ к правильному.
Как вы можете видеть на картинке «часть HTML-кода», линия, к которой я пытаюсь получить доступ, является выделенной, но есть еще два элемента, которые имеют одно и то же имя над ним.
Я пробовал много разных способов (с использованием различных методов и типов переменных и т.д.), но так как я не знаком с HTML я не могу управлять, чтобы получить то, что я хочу.
Sub Pum()
Dim ie As New InternetExplorer
'Dim IEDoc As IHTMLElementCollection
Dim IEDoc As HTMLDocument
Dim name As Object
Dim nameList As HTMLInputElement
Dim WRONGS As DispHTMLElementCollection
Dim Elems As HTMLElementCollection
Dim i As Integer
ie.navigate "thewebsiteinquestion"
ie.Visible = False
WaitIE ie
Set IEDoc = ie.document
'MsgBox IEDoc.DocumentElement.
'Elems = IEDoc.getElementsByTagName("INPUT")
MsgBox TypeName(IEDoc.getElementById("LOGON_USERID").all)
Set Elems = IEDoc.getElementById("LOGON_USERID")
'For i = 0 To 5
MsgBox Elems.Length
'Next i
For Each name In Elems.Children
MsgBox name.nodeName
MsgBox name.Attributes
MsgBox name.all
Next
'If ((NameStr Isnot Nothing And (NameStr.Length <> 0)) Then
'If NameStr = "LOGON_USERID" Then
'If TypeName(IEDoc.all("LOGON_USERID")) = "HTMLInputElement" Then
'MsgBox TypeName(IEDoc.all("LOGON_USERID"))
'Set names = IEDoc.all.Item("text")
'TypeName (InputUsernameTextzone)
'Dim Question As IHTMLElement
'Question = InputUsernameTextzone.parentElement
'MsgBox TypeName(InputUsernameTextzone.parentElement.getAttribute("name"))
'InputUsernameTextzone.parentElement
'CELLULE.value = "qtc2464"
WaitIE ie
Set ie = Nothing
Set IEDoc = Nothing
End Sub
Я пробовал два других подобных кода, используя разные методы, но у меня все еще нет никаких результатов. Надеюсь, вы можете мне помочь.
Если вам нужна дополнительная информация, то дайте мне знать.
Automating таким образом может быть непростым делом. Особенно, если у вас нет собственного сайта. Каждый раз, когда сайт обновляется, ваш код будет подвержен риску неудачи. Создает ли веб-сайт API, который вы могли бы использовать вместо этого? –
@ данные назначения: эй, в основном это веб-страница от компании, в которой я работаю, и моя идея заключалась в доступе к данным непосредственно с макросом, чтобы обновления могли выполняться автоматически. Единственное, что мы должны предоставить на этой странице, это имя пользователя и пароль. Я не знаком с термином APi, но после поиска его смысла я думаю, что нет таких вещей, которые я мог бы использовать. – Seb