2015-10-07 2 views
1

Я пытаюсь вытащить очень конкретное число с страницы Yahoo Finance, но я застрял. Ссылка, где я пытаюсь вытащить эту информацию является:Не удается получить конкретную точку передачи данных из Yahoo Finance в Excel?

http://finance.yahoo.com/q/hp?s=AAPL+Historical+Prices

Я заинтересован в получении номер 111,31, который указан в верхней части этой страницы выделены жирным шрифтом. Я написал следующий код для извлечения этой информации, но каждый раз, когда я запускаю его, он говорит: «Объект не поддерживает это свойство или метод». Я подозреваю, что ошибка лежит в строке, где я использую getElementsByClass и getElementsById, чтобы извлечь эти данные.

Sub GetQuote() 
    Dim IE As Object 

    Set IE = CreateObject("InternetExplorer.Application") 

    With IE 
     .Visible = True 
     .navigate "http://finance.yahoo.com/q/hp?s=AAPL+Historical+Prices" 
     Do While .busy: DoEvents: Loop 
     Do While .ReadyState <> 4: DoEvents: Loop 
     With .document 
      Application.Wait (Now + #12:00:05 AM#) 
      Sheets("Sheet1").Range("A3") = .getElementsByClass("time_rtq_ticker").getElementsById("yfs_184_aapl").innerText 

     End With 

    End With 

    Set IE = Nothing 
    End Sub 

Можете ли вы, пожалуйста, взглянуть и сообщить мне, где я поступил неправильно, и как я могу это исправить?

+0

Это не решило проблему, к сожалению. Я все равно получаю ту же ошибку «Объект не поддерживает это свойство или метод». – lasoon

ответ

0

getElementsByClassName method возвращает одного или нескольких объектов. Вам необходимо указать индекс (т. Е. позиция) элемента в коллекции. Попробуйте,

Sheets("Sheet1").Range("A3") = .getElementsByClass("time_rtq_ticker")(0).getElementById("yfs_184_aapl").innerText 

Фактически, идентификатор yfs_184_aapl уникален на этой странице. Вам нужно только,

Sheets("Sheet1").Range("A3") = .getElementById("yfs_184_aapl").innerText 

Обратите внимание, что getElementById method является единственным числом, не getElementsById.

+0

Это сработало отлично! Большое спасибо за Вашу помощь. Знаете ли вы, что я могу узнать об извлечении данных из Интернета с помощью VBA? До сих пор я использовал google, чтобы найти код, который уже был написан и пытается адаптировать его в соответствии с моими потребностями. Однако это приводит к проблемам, потому что я действительно не знаю, что происходит. Есть ли учебник, посвященный извлечению данных из Интернета с помощью VBA? – lasoon

+0

Извините, но я не знаю ни одной точки. Здесь есть примеры хороших примеров кода, которые охватывают широкий спектр ситуаций. Имейте в виду, что рано или поздно вы захотите окончить объекты xmlHTTP и выбросить объект Internet.Explorer. – Jeeped