Когда я работаю с иерархической структурой данных, такой как HTML (или JSON в этом отношении), я легко путаюсь, предполагая, над каким элементом данных я работаю.Это особенно верно, если я начну собирать многоуровневые ссылки, как вы сделали (и я видел и сделал гораздо более глубокие уровни, что это).
Поэтому я чаще всего включаю раннее связывание: в этом случае перейдите в Инструменты -> Ссылки и убедитесь, что Библиотека объектов Microsoft HTML отмечена.
Затем,Я распаковываю уровни в промежуточные объекты:
Dim nodeList As IHTMLElementCollection
Set nodeList = IE.document.getElementsByName("word")
nodeList.Item(0).Value = verb
Таким образом, я могу использовать отладчик VBE, исследовать структуры данных и обрести уверенность в том, что я работаю с точным элементом данных и элементом списка (и суб-элемент и т. д.), который я хотел.
Я смог внести следующие изменения в ваш код и заставить его работать на меня:
Option Explicit
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'For 64 Bit Systems
Sub getVerb()
Dim IE As Object ', objShellWindows As Object
Dim verb As String, strWebPath As String
strWebPath = "http://www.conjugation.org/"
verb = "querer"
'Navigate to page
'----------------
Set IE = CreateObject("InternetExplorer.Application")
With IE
.Visible = True
.Navigate strWebPath
End With
'Wait for page
Do While IE.Busy
Sleep 250
DoEvents
Loop
'Fill out
'---------
'Enter verb
'<input type="text" size="25" name="word">
Dim nodeList As IHTMLElementCollection
Set nodeList = IE.document.getElementsByName("word")
nodeList.Item(0).Value = verb
'Set to List
'<input type="radio" name="rb1" value="list">
Set nodeList = IE.document.getElementsByName("rb1")
nodeList.Item(0).Value = "list"
'Press Button Conjugate
'<input type="submit" name="B1" value="Conjugate">
Set nodeList = IE.document.getElementsByName("B1")
nodeList.Item(0).Click
'TODO: extract info
'Exit IE
'--------
IE.Quit
Set IE = Nothing
End Sub