Ошибка выполнения 91 «Переменная объекта или переменная блока не установлена» - PullRequest
1 голос
/ 11 марта 2020
Sub FindUser()

Dim ie as shdocvw.internetexplorer
Dim ht as htmldocument

Set ie = new internetexplorermedium
Ie.visible = True
Ie.navigate ("url")

Do while ie.busy or ie.readystate <> 4
Doevents
Loop

Set ht = ie.document

Activesheet.range("b30").value = ht.getelementbyid("infobasic").getelementsbytagname("span") (0).innertext

End sub

Я получаю сообщение об ошибке в жирном тексте (активная таблица ... строка). Но если я продолжу выполнять код вручную, я получу желаемое значение в ячейке. Это просто ошибка в середине. Пожалуйста помоги. Я хочу получить веб-данные в ячейку Excel. В коде я упомянул только один тег, однако я буду использовать больше тегов для получения большего количества результатов из Интернета.

1 Ответ

0 голосов
/ 11 марта 2020

Ошибка означает, что вы пытаетесь получить доступ к свойству объекта с нулевым значением.

Вам необходимо немного расширить свой метод и проверить каждый объект, прежде чем пытаться получить доступ к его свойствам, чтобы избежать такого ошибки.

Например:

Dim objInfo as Object
Set objInfo = ht.getelementbyid("infobasic")

If objInfo Is Nothing then
    'no need to go any further here as the object is null and 
    'will throw an error if you try to access its properties.
End if

Dim elements as Object
Set elements = objInfo.getelementsbytagname("span")

If elements Is Nothing then
    'same as above
End if

Dim element as Object
Set element = elements(0)

If Not element Is Nothing then
    'here you can safely access the .innerText property
End if

После отладки выше, вы можете увидеть, какой объект не был установлен.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...