Заставьте vba подождать, пока проводник не будет готов - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть код, который извлекает данные таблицы из URL.

Там мне нужно сделать vba для выполнения действия клика (чтобы отобразить последнюю таблицу), , который возвращает ожидаемый результат только в отладкеmode.

Set objCollection = html.getElementsByClassName("{a keyword is entered here}")

objCollection(0).Click

Если я просто запускаю код, создается впечатление, что действие щелчка не было выполнено.

Если я остановил выполнение кода сразу после команды click, а затем разрешил кодуснова запустить, затем я получаю ожидаемый результат.

Я пробовал много вещей:

  • DoEvents
  • отдельная подпрограмма ("Refresh_All_Data_Connections"), рекомендованная в некоторыхдругая тема

, где проблема была похожей

Может ли кто-нибудь помочь найти недостающую часть кода?

1 Ответ

0 голосов
/ 22 ноября 2018

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

Sub demo()
 Dim IE As InternetExplorer
    
    Set IE = CreateObject("InternetExplorer.Application")
       
    IE.navigate "C:\Users\Administrator\Desktop\demo66.html"
    
    IE.Visible = True
    
  While IE.Busy
        DoEvents
  Wend
    Do Until IE.readyState = READYSTATE_COMPLETE
        DoEvents
    Loop
    Do Until IE.document.readyState = "complete"
        DoEvents
    Loop
    
   Set Button = IE.document.getElementById("btn1")
    Button.Click
    
   
End Sub

Вам необходимо изменить URL и идентификатор кнопки в приведенном выше коде.Кроме того, вы можете изменить код в соответствии с вашими требованиями.

Также убедитесь, что сценарии уже разрешены и IE не показывает никаких запросов на его разрешение.Это может подавить щелчок.

...