2017-06-21 19 views
1

こんにちは私はこのページのデータを抽出しようとしていますhttps://finance.yahoo.com/quote/ADM.L/balance-sheet?p=ADM.L、 ですが、問題はページがデフォルトで毎年設定されていますが、私は総資産および総負債。Excel VBAを使用してyahooファイナンスからデータを抽出

このコードは実行されますが、ほとんどの場合、年間値が選択されます。私は何ができるかを提案してください。

Private Sub CommandButton3_Click() 
' 
Dim ie As Object 
Set Rng = Range("A2:A50") 
Set Row = Range(Rng.Offset(1, 0), Rng.Offset(1, 0).End(xlDown)) 
Set ie = CreateObject("InternetExplorer.Application") 
With ie 
'.Visible = False 
For Each Row In Rng 
.navigate "https://finance.yahoo.com/quote/" & Range("A" & Row.Row).Value & "/balance-sheet?p=" & Range("A" & Row.Row).Value 
'Application.Wait (Now + TimeValue("0:00:02")) 
While ie.readyState <> 4 
Wend 

Do While ie.Busy: DoEvents: Loop 

Dim doc As HTMLDocument 
Set doc = ie.document 

doc.getElementsByClassName("P(0px) M(0px) C($actionBlue) Bd(0px) O(n)")(2).Click 

Do While ie.Busy: DoEvents: Loop 
Application.Wait (Now + TimeValue("0:00:05")) 
Range("D" & Row.Row).Value = doc.getElementsByClassName("Fw(b) Fz(s) Ta(end)")(4).innerText 
Range("E" & Row.Row).Value = doc.getElementsByClassName("Fw(b) Fz(s) Ta(end)")(12).innerText 
Range("F" & Row.Row).Value = doc.getElementsByClassName("C($gray) Ta(end)")(0).innerText 


Next Row 
End With 
ie.Quit 
' 
End Sub 
+1

*何かできることを提案してください。* - ワークシートに要素を書き込む前に、IEを使用して四半期ごとのデータを選択できます。 –

+0

私はしましたが、それは常に動作していません....ほとんどは四半期データをピックアップしています –

+0

私はあなたが四半期データをピックアップしたいと思った? – Rdster

答えて

0

これは良いスタートです。

Sub DownloadData() 

Set ie = CreateObject("InternetExplorer.application") 


With ie 
    .Visible = True 
    .navigate "https://finance.yahoo.com/quote/ADM.L/balance-sheet?p=ADM.L" 

' Wait for the page to fully load; you can't do anything if the page is not fully loaded 
Do While .Busy Or _ 
    .readyState <> 4 
    DoEvents 
Loop 


Set e = ie.Document.GetElementsByClassName("Fz(s) Fw(500) D(ib) Pend(15px) H(18px) C($finDarkLink):h Mend(15px)")(1) 
e.Click 

    ' Wait for the page to fully load; you can't do anything if the page is not fully loaded 
    Do While .Busy Or _ 
     .readyState <> 4 
     DoEvents 
    Loop 

End With 

End Sub 

基本的には、「年」がデフォルトで、四半期データを表示するには、「四半期」リンクをクリックする必要があります。ヤフーは年次と四半期の2つの異なるURLを使用していたと私は信じています。今、明らかに、彼らは財務諸表の2つの周波数の間を行き来するためにクリックする2つのリンクをあなたに与えます。

0

以下のコードを修正してください。 Yahooがクラス名を "P(0px)M(0px)C($ actionBlue)Bd(0px)O(n)" ==> "P(0px)M(0px)C($ c -fuji-blue-1-b)Bd(0px)O(n)」である。

Private Sub CommandButton3_Click() 

    Dim ie As Object 
    Set Rng = Range("A2:A50") 
    Set row = Range(Rng.Offset(1, 0), Rng.Offset(1, 0).End(xlDown)) 
    Set ie = CreateObject("InternetExplorer.Application") 

    With ie 
     .Visible = True 
     For Each row In Rng 
      .navigate "https://finance.yahoo.com/quote/" & Range("A" & row.row).Value & "/balance-sheet?p=" & Range("A" & row.row).Value 

      While ie.readyState <> 4 
      Wend 

      Do While ie.Busy: DoEvents: Loop 

      Dim doc As HTMLDocument 
      Set doc = ie.document 

      Set element = doc.getElementsByClassName("P(0px) M(0px) C($c-fuji-blue-1-b) Bd(0px) O(n)")(2) 
      element.Click 

      Do While ie.Busy: DoEvents: Loop 

      Range("D" & row.row).Value = doc.getElementsByClassName("Fw(b) Fz(s) Ta(end)")(4).innerText 
      Range("E" & row.row).Value = doc.getElementsByClassName("Fw(b) Fz(s) Ta(end)")(12).innerText 
      Range("F" & row.row).Value = doc.getElementsByClassName("C($gray) Ta(end)")(0).innerText 
     Next row 
    End With 
    ie.Quit 

End Sub 
0

VBAを使用してYahooから四半期データを抽出することはできません。 年次データは抽出できますが、四半期は抽出できません。

関連する問題