getElementsByName "Ошибка объекта или переменная блока не установлена" Ошибка - PullRequest
0 голосов
/ 29 января 2020

Я получаю ошибку «Переменная объекта или переменная блока не установлена» со ссылкой на строку кода «.click». Я новичок в кодировании VBA и пробовал разные вещи, но я не могу понять это. Есть идеи?

Смысл кода в том, чтобы запустить новый проводник inte rnet, перейти на рабочий сайт, щелкнуть по раскрывающемуся списку, один раз перейти на вкладку и нажать кнопку ввода. В идеале я хотел бы просто нажать кнопку «ОК», но я получаю ту же ошибку, поэтому я, вероятно, переключу ее, если вы, ребята, можете сказать мне, что я делаю неправильно, чтобы получить ошибку.

Sub GetData()

Dim objIE As InternetExplorer
Dim Ele As Object

Set IE = New InternetExplorer
IE.Visible = True

IE.navigate "http://workurl"
Do While IE.Busy = True Or IE.readyState <> 4: DoEvents: Loop

IE.document.getElementsByName("staffGroupCombo")(0).Click

Application.Wait (Now() + TimeValue("00:00:01"))
SendKeys "+{TAB}"
Application.Wait (Now() + TimeValue("00:00:01"))
SendKeys "+{~}"

'Just placeholder stuff I sometimes need to copy
'Do While IE.Busy = True Or IE.readyState <> 4: DoEvents: Loop
'Debug.Print ele.ClassName
'Debug.Print ele.tagName
'Debug.Print ele.ID

1 Ответ

0 голосов
/ 29 января 2020

Иногда конструкции в одну строку, такие как

IE.document.getElementsByName("staffGroupCombo")(0).Click

, не работают. Я не знаю почему.

Попробуйте:

Set Ele = IE.document.getElementsByName("staffGroupCombo")
Ele(0).Click

Если страница загружена не полностью, как пишет К.Дэвис, вы можете вставить разрыв после того, как IE говорит, что он готов.

Do While IE.Busy = True Or IE.readyState <> 4: DoEvents: Loop
Application.Wait (Now() + TimeValue("00:00:05"))
...