Die Art, wie ich es sehe, gibt es zwei Möglichkeiten, Yahoo! -Finance-Daten in Excel zu bekommen. Der erste ist für Echtzeitdaten, der zweite für historische Daten.yahoo! -finance (oder andere) historische Daten in Excel
Ich brauche historische Daten. Mein aktueller VBA-Code lautet wie folgt:
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."
, die durch eine Liste von Börsentickern geht und schafft ein neues Blatt mit dem Ticker-Aktie als Namen ein, und die historischen wie folgt heruntergeladenen Daten:
Es liegt dann an mir, die relevanten Spalten, das Datum und den Schlusskurs zu extrahieren, und es zu kopieren, wo ich sie im Arbeitsblatt brauche.
Ich fand den VBA-Code, den ich online verwende, aber ich konnte nicht bestimmen, wie man es so macht, dass nur die Daten und die Close-Price-Spalte erscheinen. Soweit ich sehen kann, enthält der Code keine Abfrage auf "offen", "hoch", "niedrig", "schließen", die ich ausschließen könnte, nur die Daten zu erhalten, die ich will. Ich sehe auch nicht, was die Linie .Name = „table.csv? S = BMW.DE & d = 6 & e = 31 & f = 2012 & g = d & a = 0 & b = 1 & c = 2003 & ignore = " könnte für sein, da diese Daten nicht in meinen Daten enthalten sind. Last, obwohl ich für tägliche Daten von heute bis vor einem Jahr frage, gehen die Daten zurück bis 3.1.2000.
Zusammenfassend ist dieser unflexible Weg der einzige, den ich gefunden habe, um die notwendigen Daten zu erhalten. Was ich möchte, ist jedoch etwas, das in der folgenden Form aus:
dh mit dem Unterschied, dass ich, welche Daten ich brauche (anstatt alle offen, hoch, tief, anpassen kann. ..), und wo Sie es in das vorhandene Blatt einfügen (statt $ A $ 1 in einem neuen Blatt).
Alternativ würde ich jede andere Datenbank verwenden, falls dies vorgeschlagen wird. Die Version von Excel ist 2013. Ich schaute auf die Webservice
Funktion, aber das scheint auch nur aktuelle Daten zu holen, keine historischen Daten.