readystate=4 не работает | Доска сообщений MrExcel
Наследие 98055
Гость
- #2
Пожалуйста, напишите свой код. ReadyState и Busy обычно достаточно хороши, однако я и раньше сталкивался с проблемами. Мой обходной путь состоял в том, чтобы использовать события IE. Они кажутся более надежными. Объявите свою переменную withevents и используйте события DownloadComplete и/или NavigateComplete. Иногда нужно использовать комбинацию событий…
Голосовать за 0
Джордж Дж.
Известный член
- #3
Спасибо, Том, посмотрю на события.
Извините, это немного грубо и готово, но моя рабочая тетрадь дома, так что просто соберите это. Что я делаю, так это копирую данные с веб-страницы, делаю Alt + Tab, чтобы перейти к слову, и запускаю специальный макрос вставки, а затем вставляю результат этого в Excel (еще один Alt + Tab)
Код:
Подтест() Dim т.е. как объект Установить ie = CreateObject("InternetExplorer.Application") т.е.Видимый = Истина 'перейти на сайт ie.navigate "http://www.adrianmassey.com/db2/dbaccess.php?flat=1" 'ждем пока загрузится страница Делать, пока ie.readyState = 4 DoEvents Петля 'используйте sendkeys для заполнения формы SendKeys "{TAB 2}", Истина SendKeys " ", Истина SendKeys "{TAB 30}", Истина SendKeys " ", Истина SendKeys "{TAB 14}", Истина SendKeys " ", Истина SendKeys "{TAB 8}", Истина SendKeys " ", Истина SendKeys "{TAB 15}", Истина SendKeys " ", Истина SendKeys "{TAB 11}", Истина SendKeys " ", Истина SendKeys "{TAB 21}", Истина SendKeys " ", Истина SendKeys "{TAB 10}", Истина SendKeys " ", Истина SendKeys "{TAB 4}", Истина SendKeys " ", Истина SendKeys "{TAB 61}", Истина SendKeys " ", Истина SendKeys "{TAB 13}", Истина SendKeys " ", Истина SendKeys "{TAB 11}", Истина SendKeys " ", Истина SendKeys "{TAB 11}", Истина SendKeys " ", Истина SendKeys "{TAB 11}", Истина SendKeys " ", Истина SendKeys "{TAB 15}", Истина SendKeys " ", Истина SendKeys "{TAB 10}", Истина SendKeys " ", Истина SendKeys "{TAB 12}", Истина SendKeys " ", Истина SendKeys "{TAB 13}", Истина SendKeys " ", Истина SendKeys "{TAB 9}", Истинный SendKeys " ", Истина SendKeys "{TAB 13}", Истина SendKeys " ", Истина SendKeys "{TAB 5}", Истина SendKeys " ", Истина SendKeys "{TAB 4}", Истина SendKeys " ", Истина SendKeys "{TAB 4}", Истина SendKeys " ", Истина SendKeys "{TAB 4}", Истина SendKeys " ", Истина SendKeys "{TAB 4}", Истина SendKeys "{ENTER}", Истина 'ждем пока загрузится страница Делать, пока ie.readyState = 4 DoEvents Петля 'выбрать данные и скопировать SendKeys "%EA", Истина SendKeys "%EC", Истина т.е.Выйти 'нажмите ALT+TAB, чтобы перейти в Word, затем вставьте через макрос SendKeys ("%{TAB}"), Истина SendKeys ("%{F8}"), Истина SendKeys "{ENTER}", Истина 'ALT+TAB вернуться к Excel + вставить как текст SendKeys ("%{TAB}"), Истина Диапазон("A1").Выбрать Selection.PasteSpecial Вставить:=xlPasteValues Конец суб
Спасибо за любую помощь.
Голосовать за 0
Наследие 98055
Гость
- #4
А пока посмотрим, работает ли это…
Код:
'дождитесь загрузки страницы Делать до ie.LocationURL <> "http://www.adrianmassey.com/db2/dbaccess.php?flat=1" DoEvents Петля Делать до ie.ReadyState = 4 DoEvents Петля
Вы должны предоставить тайм-аут. Особенно, если вашей книгой будет пользоваться не программист…
Голосовать за 0
Нори
Известный член
- #5
Джордж
Вместо использования SendKeys вы рассматривали возможность доступа к элементам на странице с помощью объекта документа.
Я немного поиграл со страницей и придумал это.
Код:
Тусклый т. е. как объект Подтест() Установить ie = CreateObject("InternetExplorer.Application") т.е.Видимый = Истина 'перейти на сайт ie.navigate "http://www.adrianmassey.com/db2/dbaccess.php?flat=1" 'ждем пока загрузится страница Делать, пока ie.readyState = 4 DoEvents Петля ' проверить Совместное / Совместное Избранное ie.document.forms(0).All("fv101").Checked = True 'выбрать все годы выбрать все 21, 30 ' снимите флажок Понедельник ie.document.forms(0).All("dow1").Checked = False ' снимите флажок 5 фарлонгов ie.document.forms(0).All("ds1").Checked = False ' снять галочку с продажи долей ie.document.forms(0).All("ty1").Checked = False ' проверьте препятствие для гандикапа ie.document.forms(0).All("tyh2").Checked = True ' это должно отправить форму, но по какой-то причине ' не работает 'ie.document.forms(0).submit Конец сабвуфера Функция selectall(начало, окончание) ' это проверяет все указанные флажки и адаптировано ' из JavaScript на веб-странице Дим я пока Для I = начать Закончить ie.document.forms(0)(I).Checked = True Далее я Завершить функцию
Я знаю, что это далеко не все, но мне было немного сложно правильно следовать всем табуляциям.
На самом деле я почти уверен, что проверяю/снимаю не те вещи.
Голосовать за 0
Джордж Дж.
Известный член
- #6
Том — спасибо, я попробую, когда вернусь домой.
Нори —
Вместо использования SendKeys рассматривали ли вы доступ к элементам на странице с помощью объекта документа
Нажмите, чтобы развернуть.
..
Никогда об этом не слышал
Посмотрю, как это работает. Откуда вы взяли tyh2 и dow1? Я вижу, что dow1 относится к дню недели, но это имя этой конкретной таблицы?
Много расследований.
Спасибо, ребята
Голосовать за 0
Нори
Известный член
-
- #7
Джордж
Я попытался проследить, куда пошли ваши вкладки, а затем попытался найти подходящее место в HTML-коде для страницы.
Я не прошел через все, так как у меня немного закружилась голова после переключения между приложениями.
Голосовать за 0
Наследие 98055
Гость
- #8
У меня немного закружилась голова…
Нажмите, чтобы развернуть…
Нори.
Бесплатный и очень удобный проводник DOM от Microsoft…
Панель инструментов разработчика Internet Explorer
Голосовать за 0
Нори
Известный член
- #9
Том
Спасибо за ссылку, но я все еще на 98.
Не спрашивайте почему.
На самом деле я только что загрузил и использую браузер Firefox, в котором есть что-то под названием DOM Inspector, которое, я думаю, может быть полезным.
Голосовать за 0
ОШИБКА 404 — Страница не найдена
|