Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2016, 14:39   #1
Puffi.Muffi
Пользователь
 
Регистрация: 18.06.2013
Сообщений: 57
По умолчанию vba & Internet Explorer 11

Доброго дня, уважаемые программисты!

Подскажите, пожалуйста, как при помощи VBA определить загрузилась ли страничка в Internet Explorer 11 ?
для того чтобы потом с помощью SendKeys делать различные манипуляции.
Код:
Sub ei ()
Dim Ie As Object
Dim WebUrl As String      
Set Ie = CreateObject("InternetExplorer.Application") 
WebUrl = "https://www.google.co.uk/#q=flowers"
With Ie
.Silent = True 
.Visible = True 
.Navigate WebUrl
End With
End Sub
Пробовала в конец подставить:
Код:
With Ie
Do While .Busy
Application.Wait (Now + TimeValue("0:00:05"))
Loop
End With
Но простой проверкой выяснилось, что в то время пока грузится страничка, Ie не занят:
Код:
If Ie.Busy Then
MsgBox "busy"
Else
MsgBox "not busy"
End If
Затем пыталась:
Код:
With Ie
Do
Application.Wait (Now + TimeValue("0:00:01"))
Loop Until .READYSTATE <> READYSTATE.READYSTATE_COMPLETE
End With
Получаем: run-time error -2147417848 (80010108)
Automation error
The object invoked has disconnected from its clients.

Если вставляем
Код:
MsgBox Ie.ReadyState
то получаем "0".

Не знаете поддерживается ли в Internet Explorer 11 .Busy и(или) .ReadyState ? Чем они отличаются? Как можно решить задачу определения загрузки странички?

Буду благодарна за любые идеи.
Puffi.Muffi

Последний раз редактировалось Puffi.Muffi; 17.03.2016 в 14:45.
Puffi.Muffi вне форума Ответить с цитированием
Старый 17.03.2016, 15:03   #2
Puffi.Muffi
Пользователь
 
Регистрация: 18.06.2013
Сообщений: 57
По умолчанию

... похоже с "https://www.google.co.uk/#q=flowers"
.Busy работает, может от сайта зависит?
Puffi.Muffi вне форума Ответить с цитированием
Старый 17.03.2016, 23:31   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Надо проверять и то, и другое:
Код:
With Ie
' ...
.Navigate WebUrl

While .busy Or (.readyState <> 4): DoEvents: Wend ' ждем, пока загрузится страница

' а теперь можно к документу обращаться
End With
подробнее - здесь: http://excelvba.ru/code/GetWebPageText
EducatedFool вне форума Ответить с цитированием
Старый 22.03.2016, 15:00   #4
Puffi.Muffi
Пользователь
 
Регистрация: 18.06.2013
Сообщений: 57
По умолчанию

EducatedFool, спасибо за ответ.

Но тут дело в том, что когда страничка грузится статус Not Busy.

А если оставить только readyState, то:
run-time error -2147417848 (80010108)
Automation error
The object invoked has disconnected from its clients.

Не знаете, может стоит добавить Reference какую-нибудь?
Почему с одними страничками в интернете код работает, а с другими нет? в чем разница?
Puffi.Muffi вне форума Ответить с цитированием
Старый 22.03.2016, 16:17   #5
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Выход всегда есть, даже через одно место.
что и получил в итоге
Код:
Sub ei()
    Dim Ie As Object, reviewDialog
    Dim WebUrl As String
    Set Ie = CreateObject("InternetExplorer.Application")
    WebUrl = "https://www.google.co.uk/#q=flowers"
    With Ie
        .Silent = True
        .Visible = True
        .Navigate "about:blank"
        Application.Wait (Now + TimeValue("0:00:01"))
        .Navigate WebUrl

        Do While .Document Is Nothing
            DoEvents
            Application.Wait (Now + TimeValue("0:00:01"))
        Loop

    End With
    On Error Resume Next
    Set reviewDialog = Ie.Document.getElementById("reviewDialog")
    Do While reviewDialog Is Nothing
        DoEvents
        Application.Wait (Now + TimeValue("0:00:01"))
        Set reviewDialog = Ie.Document.getElementById("reviewDialog")
    Loop
End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 22.03.2016, 18:00   #6
Puffi.Muffi
Пользователь
 
Регистрация: 18.06.2013
Сообщений: 57
По умолчанию

Doober, спасибо за предложенные обходы.

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

Может это какие-то настройки безопасности?
Puffi.Muffi вне форума Ответить с цитированием
Старый 23.03.2016, 00:06   #7
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Сообщение от Puffi.Muffi Посмотреть сообщение
Doober, спасибо за предложенные обходы.
С моим сайтом не работает.
Ищите в коде страницы элемент с вашим ид и замените в Ie.Document.getElementById("reviewDialog")
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 13.07.2017, 23:05   #8
vorchunder
Новичок
Джуниор
 
Регистрация: 13.07.2017
Сообщений: 2
По умолчанию

Привет doober.
у меня аналогичная проблема. можно сказать один в один.
на Win64,Off20007,IE11
сайт который не получается из скрипта проверить окончание загрузки - aliexpress(точка)com

на других сайтах предложенный тобой пример отлично работает, на этом нет.
заменить id на нужный и всё ок.
а там как будто не находит эти id. как будто их и нет.

есть идеи как побороть?

до этого пробовал с IE8. так в IE8 сайт не полностью грузится, не выполняет скрипты, не всё отображает.

может дело в скриптах сайта? делают что-то нехорошее...
vorchunder вне форума Ответить с цитированием
Старый 14.07.2017, 00:26   #9
vorchunder
Новичок
Джуниор
 
Регистрация: 13.07.2017
Сообщений: 2
По умолчанию

убрал из доверенных сайтов - заработало.
vorchunder вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Internet Explorer Fresh_Style Помощь студентам 0 24.05.2015 07:50
Как развернуть окно в Internet Explorer средствами VBA? Скрипт Microsoft Office Excel 4 12.09.2013 00:15
internet explorer 7, 8, 9 SkrudjMakdak JavaScript, Ajax 11 18.07.2011 18:32
Internet Explorer StartMis Работа с сетью в Delphi 0 01.03.2010 01:56
Internet explorer AIst Общие вопросы Delphi 2 08.12.2008 22:17