我看到它的方式,有两种可能性让雅虎! - 金融数据进入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
函数,但它似乎也只能提取当前数据,而不是历史数据。