2016-05-27 14 views
-1

私はナスダックのウェブサイトからの配当履歴のリフレッシュクエリを作成したいと思い、アップルのためのURL(ここでhttp://www.nasdaq.com/symbol/aapl/dividend-historyエクセル - ナスダックの配当履歴(Webからの外部データの取り込み)

私は、Excelのネイティブ「新を実行しようとすると配当履歴テーブルが選択可能なオプションではないようです。この情報をスプレッドシートに抽出する最良の方法は何ですか?

可能であれば、クエリが特定のセルにあるティッカーを参照して実行できる場合は、本当に役立つでしょう。

アドバイスをいただければ幸いです。

編集:私は配当とその発表日を具体的に探しており、この情報はナスダックのウェブサイトでのみ統合されていることがわかりました。代わりに利用可能な場合は、より優秀なも役立つだろう優秀である場合。

+0

私は配当を報告し、そのいずれかを見つけることができなかったと発表は、私がいた – epw

+0

をさかのぼり不明確、私はより具体的に更新されます – epw

+0

あなたはコピーして、テキストを列に貼り付けることができますか?しかし、それが1000sのためにこれをやっているなら、それは吸うだろう – findwindow

答えて

0

は、この試してみて - VBAのWebスクレイピングは最もエレガントではなく、すべてのツールは、目的を達成するためにあります

Option Explicit 

Sub Test() 
    Call PasteNasdaqTickerTableHtmlToSheet(ThisWorkbook.Sheets("Sheet4"), "aapl") 
End Sub 

Sub PasteNasdaqTickerTableHtmlToSheet(ByRef ws As Worksheet, ByVal strTicker As String) 

    Dim strTableData As String 
    Dim objDataObject As Object 

    strTableData = GetTableHtmlFromUrl("http://www.nasdaq.com/symbol/" & strTicker & "/dividend-history", "quotes_content_left_dividendhistoryGrid") 

    Set objDataObject = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") 

    With objDataObject 
     .SetText strTableData 
     .PutInClipboard 
    End With 

    ws.PasteSpecial Format:="Text", link:=False, DisplayAsIcon:=False 

End Sub 


Function GetTableHtmlFromUrl(ByVal strUrl As String, ByVal strTableId As String) As String 

    Dim objHtmlReader As Object 
    Dim strDocumentHtml As String 
    Dim objHtmlParser As Object 
    Dim objHtmlTables As Object 
    Dim strTableHtml As String 
    Dim intTableCounter As Integer 

    On Error GoTo ErrHandler 

    'get document html 
    Set objHtmlReader = CreateObject("MSXML2.XMLHTTP") 
    With objHtmlReader 
     .Open "GET", strUrl, False 
     .Send 
     strDocumentHtml = .ResponseText 
    End With 
    Set objHtmlReader = Nothing 

    'return all html if no id supplied 
    If strTableId = "" Then 
     GetTableHtmlFromUrl = strDocumentHtml 
     Exit Function 
    End If 

    'now parse html for tables 
    Set objHtmlParser = CreateObject("htmlfile") 
    objHtmlParser.body.innerHTML = strDocumentHtml 
    Set objHtmlTables = objHtmlParser.getElementsByTagName("table") 

    'iterate tables and check id against our input 
    For intTableCounter = 1 To objHtmlTables.Length 
     If objHtmlTables.Item(intTableCounter).getAttribute("id") = strTableId Then 
      strTableHtml = objHtmlTables.Item(intTableCounter).outerHTML 
      Exit For 
     End If 
    Next intTableCounter 
    Set objHtmlTables = Nothing 
    Set objHtmlParser = Nothing 

    'return table html 
    GetTableHtmlFromUrl = strTableHtml 

    Exit Function 

ErrHandler: 
    Debug.Print Err.Number & " : " & Err.Description 
    Set objHtmlReader = Nothing 
    GetTableHtmlFromUrl = "" 

End Function 
+0

downvoteを説明してください? –

+0

私はそれが役に立つ答えだと感じています。 – skkakkar

関連する問題