[英]Excel - Nasdaq Dividend History (Get External Data from Web)
我想從納斯達克的網站創建一個可刷新的股息歷史查詢,這里是蘋果的 URL ( http://www.nasdaq.com/symbol/aapl/dividend-history )
當我嘗試運行 Excel 的本機“新 Web 查詢”時,股息歷史記錄表似乎不是一個可選選項。 將此信息提取到電子表格中的最佳方法是什么?
如果可能的話,如果可以運行查詢來引用某個單元格中的股票代碼,那也會非常有幫助。
任何意見,將不勝感激。
編輯:我正在專門尋找股息及其宣布日期,只能在納斯達克的網站上找到這些信息。 如果有一種對 excel 更友好的替代方法,那也會有幫助。
試一試 - VBA 網頁抓取不是最優雅的,但所有工具都可以實現目標:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.