Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 17.03.2016, 15:39   #1
Puffi.Muffi
Форумчанин
 
Регистрация: 18.06.2013
Сообщений: 57
Репутация: 10
По умолчанию 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 в 15:45.
Puffi.Muffi вне форума   Ответить с цитированием
Старый 17.03.2016, 16:03   #2
Puffi.Muffi
Форумчанин
 
Регистрация: 18.06.2013
Сообщений: 57
Репутация: 10
По умолчанию

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

skype: ExcelVBA.ru
По умолчанию

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

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

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

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, 17:17   #5
doober
Профессионал
 
Аватар для doober
 
Регистрация: 02.05.2009
Адрес: Леса Мордовии
Сообщений: 3,903
Репутация: 650

skype: d_ober1
По умолчанию

Выход всегда есть, даже через одно место.
что и получил в итоге
Код:
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, 19:00   #6
Puffi.Muffi
Форумчанин
 
Регистрация: 18.06.2013
Сообщений: 57
Репутация: 10
По умолчанию

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

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

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

skype: d_ober1
По умолчанию

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

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

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

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

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

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Internet Explorer Fresh_Style Помощь студентам 0 24.05.2015 08: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 02:56
Internet explorer AIst Общие вопросы Delphi 2 08.12.2008 23:17


17:04.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.