AW: Historische Aktienkurse
05.01.2017 17:27:07
Michael
Hi Manfred,
verwende zum Import mal das hier:
Sub Import()
Dim objXMLHTTP As Object
Dim sURL As String, sResult As String, ausCP$
Dim werte, w0, zeile, z&, s&
Dim EndDate As Date
Dim StartDate As Date
Dim Symbol As String
Sheets("Data").Range("A1").CurrentRegion.Offset(1).ClearContents
StartDate = Range("startDate").Value
EndDate = Range("endDate").Value
Symbol = Range("ticker").Value
sURL = "http://ichart.finance.yahoo.com/table.csv?s=" & Symbol
sURL = sURL & "&a=" & Month(StartDate) - 1 & "&b=" & Day(StartDate) & _
"&c=" & Year(StartDate) & "&d=" & Month(EndDate) - 1 & "&e=" & _
Day(EndDate) & "&f=" & Year(EndDate) & "&g=" & Sheets("Data").Range("a1") & "&q=q&y=0& _
z=" & _
Symbol & "&x=.csv"
Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
objXMLHTTP.Open "GET", sURL, False
objXMLHTTP.Send
If objXMLHTTP.Status 200 Then
MsgBox "Status 200: " & objXMLHTTP.Status
Exit Sub
End If
sResult = objXMLHTTP.ResponseText
Set objXMLHTTP = Nothing
werte = Split(sResult, vbLf)
ReDim w0(0 To UBound(werte), 0 To 6)
' werte = Split(sResult, vbLf)
' MsgBox UBound(werte)
' Stop
For z = 0 To UBound(werte) - 1
zeile = Split(werte(z), ",")
w0(z, 0) = zeile(0)
For s = 1 To 6
If z > 0 Then w0(z, s) = Val(zeile(s)) Else w0(z, s) = zeile(s)
Next
Next
With Sheets("Data")
.Range("A1").Resize(UBound(werte) + 1, 7) = w0
.Range("A1").CurrentRegion.Sort .Range("A1"), xlAscending, Header:=True
End With
End Sub
Die Problematik ist, daß die Zahlen das engl. Format mit Dezimal-Punkt haben. Durch das Aufdröseln in einer Schleife und val() wird die Problematik entschärft: heraus kommen "normale" Zahlen (nicht TEXT, wie Du die Spalten in "Data" formatiert hattest).
Der obige Code verwendet keine "Verbindungen" (siehe Deine Datei unter "Daten"/externe Daten/Verbindungen - da tummeln sich sehr viele, die Du alle rauslöschen kannst).
Schöne Grüße,
Michael