Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Поймать появление нового окна IE - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Поймать появление нового окна IE
giovanni Дата: Четверг, 17.08.2017, 13:27 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Добрый день!

Задавал данный вопрос на Планете Эксель, но предложенные там варианты у меня не сработали, видимо, из-за моего слабого уровня в VBA.
Прошу Вас помочь мне в данном вопросе. Уже который день пытаюсь разобраться, но пока тщетно(

Вопрос заключается в следующем: есть написанный макрос по заполнению веб-форм в браузере IE. Сам макрос работает нормально, формы заполняются, кнопки отправки нажимаются. На последнем этапе работы макроса, происходит нажатие на кнопку "Печать" на сайте, после чего в дополнение к открытому окну IE, открывается еще новое окно (не вкладка, именно окно) . Окно открывается не сразу, через 5-7 секунд. Мне необходимо отправить на это окно команду SendKeys "{ENTER}". Тут и возникает проблема. Чтобы отправить SendKeys, нужно на окне IE сделать фокус, но сделать фокус не получается, потому что не могу поймать новое окно.
Макрос запускается с уже открытым IE, создавать необходимости нет. Окно IE ловлю с помощью такого кода:

[vba]
Код
Const sApplicationName As String = "Internet Explorer"
    Dim oShellWindows As New SHDocVw.ShellWindows
    Dim oIE As SHDocVw.WebBrowser
    Dim bFlag As Boolean
    If oShellWindows.Count = 0 Then
        MsgBox "не найдено открытых окон IE!", vbCritical
        Exit Sub
    End If
    For Each oIE In oShellWindows
        If oIE.Application = sApplicationName Then
            bFlag = True
            oIE.Visible = False
               oIE.Visible = True
            Exit For
        End If
    Next oIE
    If bFlag = False Then
        MsgBox "не найдено открытых окон IE!", vbCritical
        Exit Sub
    End If
[/vba]

Подскажите, пожалуйста, как можно в конце макроса сделать паузу и циклически проверять открылось ли еще одно окно IE и если оно открылось, то отправить на него SendKeys и продолжить макрос, а если все еще не открылось, то проверять открытие после паузы Sleep(100) и так, пока новое окно IE не откроется?
На ум приходит что-то типа do while с loop, но сам разобраться в этом пока не могу(


Сообщение отредактировал giovanni - Четверг, 17.08.2017, 13:29
 
Ответить
СообщениеДобрый день!

Задавал данный вопрос на Планете Эксель, но предложенные там варианты у меня не сработали, видимо, из-за моего слабого уровня в VBA.
Прошу Вас помочь мне в данном вопросе. Уже который день пытаюсь разобраться, но пока тщетно(

Вопрос заключается в следующем: есть написанный макрос по заполнению веб-форм в браузере IE. Сам макрос работает нормально, формы заполняются, кнопки отправки нажимаются. На последнем этапе работы макроса, происходит нажатие на кнопку "Печать" на сайте, после чего в дополнение к открытому окну IE, открывается еще новое окно (не вкладка, именно окно) . Окно открывается не сразу, через 5-7 секунд. Мне необходимо отправить на это окно команду SendKeys "{ENTER}". Тут и возникает проблема. Чтобы отправить SendKeys, нужно на окне IE сделать фокус, но сделать фокус не получается, потому что не могу поймать новое окно.
Макрос запускается с уже открытым IE, создавать необходимости нет. Окно IE ловлю с помощью такого кода:

[vba]
Код
Const sApplicationName As String = "Internet Explorer"
    Dim oShellWindows As New SHDocVw.ShellWindows
    Dim oIE As SHDocVw.WebBrowser
    Dim bFlag As Boolean
    If oShellWindows.Count = 0 Then
        MsgBox "не найдено открытых окон IE!", vbCritical
        Exit Sub
    End If
    For Each oIE In oShellWindows
        If oIE.Application = sApplicationName Then
            bFlag = True
            oIE.Visible = False
               oIE.Visible = True
            Exit For
        End If
    Next oIE
    If bFlag = False Then
        MsgBox "не найдено открытых окон IE!", vbCritical
        Exit Sub
    End If
[/vba]

Подскажите, пожалуйста, как можно в конце макроса сделать паузу и циклически проверять открылось ли еще одно окно IE и если оно открылось, то отправить на него SendKeys и продолжить макрос, а если все еще не открылось, то проверять открытие после паузы Sleep(100) и так, пока новое окно IE не откроется?
На ум приходит что-то типа do while с loop, но сам разобраться в этом пока не могу(

Автор - giovanni
Дата добавления - 17.08.2017 в 13:27
doober Дата: Четверг, 17.08.2017, 13:57 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 995
Репутация: 345 ±
Замечаний: 0% ±

Excel 2010
Повторюсь.
Большую часть телодвижений можно сделать запросами без браузера.
Браузеру оставить роль печати файла.


 
Ответить
СообщениеПовторюсь.
Большую часть телодвижений можно сделать запросами без браузера.
Браузеру оставить роль печати файла.

Автор - doober
Дата добавления - 17.08.2017 в 13:57
giovanni Дата: Четверг, 17.08.2017, 14:14 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Большую часть телодвижений можно сделать запросами без браузера.


Спасибо за ответ!
Да, я смотрел в сторону данного метода. Но пока особо ничего не понял)
Могли бы вы подсказать пару ньюансов:

- можно ли заполнить форму с помощью запросов, если она динамическая, с меняющимися классами тегов в зависимости от нажатия той или иной кнопки на форме,

- подскажите куда смотреть, чтобы разобраться в этом методе ( может есть примеры доходчивые), т.к. в VBA пока понимаю не так много)

Спасибо!

UPD: я же правильно понимаю, речь идет об GET и POST запросах?


Сообщение отредактировал giovanni - Четверг, 17.08.2017, 14:15
 
Ответить
Сообщение
Большую часть телодвижений можно сделать запросами без браузера.


Спасибо за ответ!
Да, я смотрел в сторону данного метода. Но пока особо ничего не понял)
Могли бы вы подсказать пару ньюансов:

- можно ли заполнить форму с помощью запросов, если она динамическая, с меняющимися классами тегов в зависимости от нажатия той или иной кнопки на форме,

- подскажите куда смотреть, чтобы разобраться в этом методе ( может есть примеры доходчивые), т.к. в VBA пока понимаю не так много)

Спасибо!

UPD: я же правильно понимаю, речь идет об GET и POST запросах?

Автор - giovanni
Дата добавления - 17.08.2017 в 14:14
doober Дата: Четверг, 17.08.2017, 14:25 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 995
Репутация: 345 ±
Замечаний: 0% ±

Excel 2010
В Лисе ,Хроме есть возможность просмотреть обмен с сервером.
Смотрите, что отправляет браузер на сервер, что приходит в ответ.
Попробуйте продублировать запросы при помощи vba.
Особое внимание обращайте на заголовки запросов.
Поисковая фраза для поиска в гугле,яндексе XmlHttpRequest VBA


 
Ответить
СообщениеВ Лисе ,Хроме есть возможность просмотреть обмен с сервером.
Смотрите, что отправляет браузер на сервер, что приходит в ответ.
Попробуйте продублировать запросы при помощи vba.
Особое внимание обращайте на заголовки запросов.
Поисковая фраза для поиска в гугле,яндексе XmlHttpRequest VBA

Автор - doober
Дата добавления - 17.08.2017 в 14:25
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2026 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!