Метод getElementsByTagName()
возвращает коллекцию всех элементов в документе с указанным именем тега как объект HTMLCollection.
Таким образом, вы должны указать, какой элемент из коллекции следует щелкнуть. В этом случае первый, вероятно, самый безопасный выбор:
Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
Set HTMLDoc = ie.Document
HTMLDoc.getElementsByTagName("a")(0).Click
И, нажав F12 в Chrome, вы можете просмотреть веб-сайт. Если этот элемент, который вы хотите щелкнуть, содержит тег ID, то лучше указать его:
HTMLDoc.getElementById("SomeFancyID").getElementsByTagName("a")(0).Click
Редактировать:
Насколько так как ошибка в Set HTMLDoc
, то постарайтесь свести к минимуму код, насколько это возможно, и отладить оттуда. Попробуйте это:
Sub Something()
Dim ie As Object
Dim HTMLDoc As MSHTML.HTMLDocument
Set ie = CreateObject("InternetExplorer.Application")
ie.Navigate "https://stackoverflow.com/questions"
Do While ie.Busy = True Or ie.ReadyState <> 4: DoEvents: Loop
Set HTMLDoc = ie.Document
Stop 'Press SHIFT + F9 and examine the window...
End Sub
И как только код остановится в строке Stop
, нажмите SHIFT + F9 и осмотрите окно. Там вы увидите все коллекции: