Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1532to1536
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Historische Aktienkurse

Historische Aktienkurse
05.01.2017 15:57:41
Manfred
Hallo zusammen,
habe im Internet ein Excel Mako gefunden und angepasst.
Es lädt mir Historische Aktienkurse von einer Finance-Yahoo-Seite ins Blatt DATA.
Nun kommen die Daten in zwei verschiedenen Formaten an.
1) 5.35 2) 5827
Kann mir bitte jemand Helfen das Makro so anzupassen das die Zahlenformate später dann als 5,35 und 5,83 rauskommen.
https://www.herber.de/bbs/user/110352.xlsm
Mit freundlichen Grüßen
Manfred

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
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
Anzeige
AW: Historische Aktienkurse
05.01.2017 17:54:13
Manfred
Hallo Michael,
vielen Dank für diese super Lösung.
Ich bin geblendet :-) Das Makro ist auch noch schneller als früher.
Mit freundlichen Grüßen
Manfred
AW: Historische Aktienkurse
06.01.2017 07:42:09
Luschi
erzeugte Objektvariablen & Datenfelder (Arrays) sollte man am Schluß der Prozedur selbst ins Nirvana
schicken, anstatt sich auf Vba zu verlassen. Deshalb füge am Schluß vor 'End Sub' folgende Vba- _ _ Zeilen ein:

If IsArray(werte) Then
Erase werte
End If
If IsArray(w0) Then
Erase w0
End If
Set objXMLHTTP = Nothing
Gruß von Luschi
aus klein-Paris
PS: über dieses Thema wurde erst kürzlich hier hart aber fair diskutiert:
http://www.ms-office-forum.net/forum/showthread.php?t=338408&page=2
Anzeige
AW: Historische Aktienkurse
06.01.2017 15:10:07
Michael
Hi,
@Manfred: freut mich, gern geschehen.
@Luschi: habe den Thread mal angesehen; insbesondere der Lippert-Link hat mich deutlich amüsiert.
Mein Codeschnipsel ist es aber insofern vertretbar, als das möglicherweise ressourcenfressende _ Objekt mit

Set objXMLHTTP = Nothing
abgewürgt wird, sobald es nichts mehr zu tun hat.
Um Arrays oder sonstige Objekte mache ich mir eher keine Gedanken, da schließe ich mich dem Lippert an: wenn das in einem von 1000 Fällen Ärger machen *könnte*, ist das für mich kein Grund, es immer einzusetzen. Oder so: Probleme hatte ich bislang damit keine.
Schöne Grüße,
Michael
Anzeige
AW: Historische Aktienkurse
06.01.2017 17:21:53
Luschi
Hallo Michael,
sicher kannst Du Dich an die Vba-internen Abläufe halten und auf das Versprechen von M$ verlassen und die selbsterstellten Objekte nicht selbst beseitigen.
Aber M$ hat nicht umsonst in den Net-Programmiersprachen Vb.Net / C# / F# die Using-Anweisung einngeführt, um sicher zu stellen, daß erzeugte Objekte auch sicher beendet werden, bevor die Prozedur/Funktion zu Ende ist und der 'Garbage Collector' den Speicher aufräumt.
Bei mir ist das eigene Aufräumen der Objekte Pflicht.
Gruß von Luschi
aus klein-Paris
AW: Historische Aktienkurse
06.01.2017 20:04:41
Michael
Hallo Luschi,
ich muß zugeben, daß ich keine besondere Ahnung von der Sache habe.
Insofern ist eine weitere Diskussion eher müßig - leider.
Na, ich behalt's mal im Hinterkopf, falls es doch mal zickt.
Gute Zeit & Grüße,
Michael
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige