我看到它的方式,有兩種可能性讓雅虎! - 金融數據進入excel。第一個是實時數據,第二個是歷史數據。雅虎! - 財務(或其他)的歷史數據在excel
我需要歷史數據。我現在的VBA代碼如下:
firstcolumn = 2
lastcolumn = 6
For n = firstcolumn To lastcolumn
Ticker = Worksheets(1).Cells(3, n).Value
ActiveWorkbook.Worksheets.Add After:=Worksheets(Worksheets.Count)
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;http://ichart.finance.yahoo.com/table.csv?s=" & Ticker & "&d=" & Month(Date) & "&e=" & Day(Date) & "&f=" & Year(Date) & "&g=d&" _
& "a=" & Month(Date) & "&b=" & Day(Date) & "&c=" & Year(Date) - 1 & "&ignore=.csv" _
, Destination:=Range("$A$1"))
.Name = "table.csv?s=BMW.DE&d=6&e=31&f=2012&g=d&a=0&b=1&c=2003&ignore="
.FieldNames = True
.RowNumbers = True
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(5, 1, 1, 1, 1, 1, 1)
.TextFileDecimalSeparator = "."
.TextFileThousandsSeparator = ","
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
ActiveSheet.Name = Ticker
MsgBox "status ende"
ActiveWorkbook.Connections("table.csv?s=" & Ticker & "&d=" & Month(Date) & "&e=" & Day(Date) & "&f=" & Year(Date) & "&g=d&a=" & Month(Date) & "&b=" _
& "" & Day(Date) & "&c=" & Year(Date) - 1 & "&ignore=").Delete
ActiveSheet.QueryTables.Item(ActiveSheet.QueryTables.Count).Delete
ActiveSheet.ListObjects.Add(xlSrcRange, ActiveSheet.Range(ActiveSheet.Cells(1, 1), ActiveSheet.Cells(1, 7).End(xlDown)), , xlYes).Name = Ticker
'MsgBox "The data for " & Ticker & " were downloaded to a new sheet."
Next n
Exit Sub
ERR:
MsgBox "Error. Please check."
其中通過股票行情的例子不勝枚舉,並創建了股票的股票代碼爲名稱的新表,並下載的歷史數據如下:
然後由我來提取相關的列,日期和結束價格,並將其複製到工作表中我需要的地方。
我發現了我在線使用的VBA代碼,但我無法確定如何使它只顯示數據和收盤價。就我所見,代碼不包含任何關於「open」,「high」,「low」,「close」的查詢,我可以排除它們只接收我想要的數據。我還看不出有什麼行 請將.Name =「table.csv?S = BMW.DE & d = 6 & E = 31 & F = 2012 & G = d & A = 0 & B = 1 & C = 2003 & ignore =「 」可能適用,因爲這些日期未反映在我的數據中。 最後,即使我要求從今天到一年前的每日數據,數據可追溯到3.1.2000。
總之,這種不靈活的方式是我發現獲得必要數據的唯一辦法。我想,然而,一些看起來以下形式:
即不同之處在於,我可以調整,我需要哪些數據(而不是所有的開放式,高,低,。 ..),以及將其插入現有工作表(而不是新工作表中的$ A $ 1)的位置。
另外,我會使用任何其他數據庫,如果建議。 Excel的版本是2013年。我查看了Webservice
函數,但它似乎也只能提取當前數據,而不是歷史數據。