2016-12-16 2 views
0

Я пытаюсь заставить VBA Excel перемещаться по таблице данных на веб-странице. Веб-страница открывается на странице # 1. Я могу обновить номер веб-страницы кодом VBA Excel. (По крайней мере, похоже, что он работает.) Но я не могу заставить данные, которые относятся к моей запрашиваемой странице, отображаться на экране. Если я нажимаю на кнопку выпадающей страницы с помощью мыши, кнопка кажется «мертвой». Я могу выбрать другую страницу успешно с помощью мыши «ОК», а затем я могу выбрать номер страницы, который я попытался выбрать с помощью Excel VBA OK. Я использую IE. Версия 11, которая, как я полагаю, использует событие отправки. Я пробовал всевозможные трюки, которые я исследовал в сети без успеха. Следующий код - моя последняя попытка. Я надеюсь, что кто-то с большим опытом, чем я, может помочь. Заранее спасибо.Почему я не могу получить мою веб-страницу для перехода на запрошенную страницу через VBA Excel

Sub ExtractTablesData() 

    Dim IE As Object 
    Dim obj As Object 
    Dim elemCollection As Object 
    Dim evt 

    Set IE = CreateObject("InternetExplorer.Application") 

    With IE 
     .Visible = True 
     .navigate ("http://My Web Page") 

     While IE.readystate <> 4    ' wait for pages to download 
     DoEvents 
     Wend 

     Do While IE.busy: DoEvents: Loop  ' make sure page has downloaded 
     Set elemCollection = IE.Document.getelementsbytagname("TABLE") 

     Set evt = IE.Document.createEvent("HTMLEvents") 
     evt.initEvent "change", False, True 

     IE.Document.getElementsbyClassName("pager-select")(0).selectedIndex = 5 
            ' trying to get the 6th page of data 

     IE.Document.getElementsbyClassName("pager-select")(0).Click 
     IE.Document.getElementsbyClassName("pager-select")(0).dispatchEvent (evt) 

     Application.Wait (Now + TimeValue("0:00:02")) 

     Do While IE.busy: DoEvents: Loop ' make sure page has downloaded 

     While IE.readystate <> 4   ' wait for pages to download 
     DoEvents 
     Wend 

    End With ' IE 

ответ

0

Имел True False обратный. Случайно найден правильный ответ на другой веб-странице. Теперь работает как шарм.

evt.initEvent "change", True, False

Смежные вопросы