2017-05-08 3 views
0

最近まで、以下のコードを使用していましたが、しばらくの間うまくいきました。さて、突然それはうまくいきません。TRとTDのタグ名を使用してウェブからデータをダウンロードする方法は?

Sub Dow_HistoricalData() 

    Dim xmlHttp As Object 
    Dim TR_col As Object, TR As Object 
    Dim TD_col As Object, TD As Object 
    Dim row As Long, col As Long 

    ThisSheet = ActiveSheet.Name 
    Range("A2").Select 
    Do Until ActiveCell.Value = "" 
    Symbol = ActiveCell.Value 
    Sheets(ThisSheet).Select 
    Sheets.Add 

    Set xmlHttp = CreateObject("MSXML2.XMLHTTP.6.0") 
    myURL = "http://finance.yahoo.com/quote/" & Symbol & "/financials?ltr=1" 
    xmlHttp.Open "GET", myURL, False 
    xmlHttp.setRequestHeader "Content-Type", "text/xml" 
    xmlHttp.send 

    Dim html As Object 
    Set html = CreateObject("htmlfile") 
    html.body.innerHTML = xmlHttp.responseText 

    Dim tbl As Object 
    Set tbl = html.getElementById("Lh(1.7) W(100%) M(0)") 
    ' 

    row = 1 
    col = 1 

    Set TR_col = html.getElementsByTagName("TR") 
    For Each TR In TR_col 
     Set TD_col = TR.getElementsByTagName("TD") 
     For Each TD In TD_col 
      Cells(row, col) = TD.innerText 
      col = col + 1 
     Next 
     col = 1 
     row = row + 1 
    Next 

Sheets(ActiveSheet.Name).Name = Symbol 
Sheets(ThisSheet).Select 
ActiveCell.Offset(1, 0).Select 

Loop 

End Sub 

私は、この行でエラーメッセージが出てい:xmlHttp.send

はここでエラーメッセージがあります。 'アクセスが拒否されました。'私はこれに関するいくつかの調査を行いました。セキュリティと関係していると思いますが、マシンやYahooサイトで何が変わったのか分かりません。

ここに私のセットアップのイメージがあります。

enter image description here

+0

-e5af3212-e024-4d4c-bea0-623cf07fbc54。私は彼らがあまりにも多くのトラフィックを使用するIPをブロックするかもしれないと推測しています – Slai

+0

また、Excel 2013はWEBSERVICE機能を持っていますhttp://slowwealth.blogspot.com/2013/07/fetching-stock-quotes-with-excel-2013.html – Slai

+0

ありがとう、私はこの特定のスクリプトについて尋ねています。私は選択肢について知っています。私はうまく動作していたこのソリューションがもう動作しない理由を理解しようとしています。 – ryguy72

答えて

0

あなたが偽のブラウザ場合に動作するようです:あなたはhttps://support.office.com/en-us/article/Get-a-stock-quoteを試すことができ

With CreateObject("WinHttp.WinHttpRequest.5.1") ' 
    .Open "GET", "http://finance.yahoo.com/quote/IBM", False 
    .SetRequestHeader "User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5" 
    .Send 
    MsgBox .ResponseText 
End With 
+0

ありがとうございます。私は今持っているスクリプトにどのように組み込むのですか? – ryguy72

関連する問題