Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
684to688
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
684to688
684to688
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Parametereinstellung

Parametereinstellung
20.10.2005 18:31:11
Christian
Hallo!
ich lade Akienkurse aus Yahoo in ein Excel spreadsheet runter über eine Webabfrage:
finance.yahoo.com/q/hp?s=CSCO&d=9&e=20&f=2005&g=d&a=2&b=26&c=1990&z=66&y=66
der parameter &z=66 sagt meiner meinung nach, wieviele datensätze geladen werden sollen- verändert man jedoch diesen parameter, dann ändert sich weder über den browser etwas, noch im excel spreadsheet ---- das ist mein problem: wie bekomme ich es hin, dass ich werte der letzten 100 oder 1000 tagen automatisch runterladen kann?
hier noch die sachen, die ich rausgefunden habe:
&y=0: 0 steht für ab heute, 1 für ab gestern und so weiter
&d=9: 9 für daten von juli-oktober, 0 für okotber (2004) bis Januar (2005), usw.
&e=20: aktueller monatstag, also der 20.
&f &c: gibt irgendwie einen rahmen für die jahre vor(?)
Es gibt auf der yahoo webseite auch eine möglichkeit die daten im CSV Format runterzuladen. hier sind dann wirklich alle daten (der letzten 30 jahren oder so) drin. Aber wie kann ich das denn über eine Webquery mit meinen einstellungen, also z.b. nur 2 jahre in excel reinbekommen? das überfordert mich!!
hier die "CSV-Adresse":
ichart.finance.yahoo.com/table.csv?s=CSCO&a=2&b=26&c=1990&d=9&e=20&f=2005&g=d&ignore=.csv
wäre toll, wenn mir jemand helfen könnte!

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
halbe lösung
20.10.2005 18:55:57
Christian
so, bekomme jetzt die daten über csv:
table.finance.yahoo.com/table.csv?s=" & Range("A1") & "&d=9&e=20&f=2005&g=d&a=0&b=3&c=20002
das funktioniert und hier bedeutet:
a= von welchem monat
b= von welchem tag
c= von welchem jahr
d= bis zu welchem monat
e= bis zu welchem tag
f= bis zu welchem jahr
allerdings sind die daten jetzt irgendwie im csv-format, d.h. sie hängen alle in einer zeile.
der code für die umwandlung in 7 spalten statt der einen spalte (kommagetrennt) könnte ja ein zweizeiler sein:-)
könnte mir den einer reinstellen?
Anzeige
Text in Spalten
20.10.2005 19:57:41
Christoph
Hallo Chritian,
das geht mit "Daten - Text in Spalten"
als Makro sieht das dann zB so aus:

Sub Makro1()
Columns(1).TextToColumns Destination:=Range("A1"), _
DataType:=xlDelimited, Comma:=True, FieldInfo:= _
Array(Array(1, 1), Array(2, 1), Array(3, 1), _
Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1))
End Sub

Gruß
Christoph
AW: Text in Spalten
20.10.2005 20:07:52
Christian
Hallo Christoph!
Danke für deinen Code.
Habe es eben schon ohne vba versucht, nämlich mit makroaufzeichnung und excel ist da zweimal schon während der aufzeichnung komplett abgestürzt! Woran kann das denn liegen?
Anzeige
AW: Text in Spalten
20.10.2005 20:15:02
Christian
hab folgenden code:
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://table.finance.yahoo.com/table.csv?s=" & Range("A1") & "&d=9&e=20&f=2005&g=d&a=0&b=3&c=20002", Destination:=Range("A7"))
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "30"
.WebPreFormattedTextToColumns = False
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = True
Columns(1).TextToColumns Destination:=Range("A1"), _
DataType:=xlDelimited, Comma:=True, FieldInfo:= _
Array(Array(1, 1), Array(2, 1), Array(3, 1), _
Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1))
.Refresh BackgroundQuery:=False
End With
hab versuchsweise auch mal die ganzen .web und .irgendwas weggelassen, aber es funktioniert nicht, alles was passiert ist, dass die erste spalte verbreitert wird?
Anzeige
AW: Text in Spalten
20.10.2005 20:36:35
Christoph
Hallo Christian,
dazu habe ich leider keine Idee außer: Probier mal den "Text in Spalten"-Code separat in einer neuen Datei auszuführen, ohne deine QueryTable, etc.
bei mir läuft das mit der von dir genannten CSV bei ca 4000 Datensätzen ohne Probleme.
Noch ein Punkt: Da die Daten von finance.yahoo im amerikanischen Format vorliegen, musst du noch den Dezimal-Separator umstellen, also statt des ersten Makros dieses:

Sub Makro1()
Columns(1).TextToColumns Range("A1"), xlDelimited, Comma:=True, _
DecimalSeparator:=".", ThousandsSeparator:=","
End Sub

die ganze Array-Anweisung kannst weglassen, da alle Spalten im Standard-Format übergeben werden.
Gruß
Christoph
Anzeige
AW: Text in Spalten
20.10.2005 20:42:57
Christian
ich habe einen extra makro zum dezimalzahlenumwandeln, das extra startet. ich hoffe das liegt nicht daran.
ja, ich habe diese text in spalten code ohne die query versucht und dann funktioniert es!
Ansonsten mit query gibt excel denn Fehler "400" aus
vielleicht siehst du den fehler, wenn ich dir den gesamten code mit for schleife zeige:
-----------------

Sub AddSheets()
Dim ws As Worksheet
Dim wsNew As Worksheet
Dim LastRow As Long
Dim i As Long
Set ws = ActiveSheet
LastRow = ws.Range("B65536").End(xlUp).Row
For i = 3 To Range("E1") ' assumes worksheet names start in row 3
Set wsNew = Worksheets.Add
wsNew.Name = ws.Range("B" & i)
Sheets("Template").Select
Cells.Select
Selection.Copy
wsNew.Select
Cells.Select
ActiveSheet.Paste
wsNew.Range("A1") = wsNew.Name
ActiveSheet.Move after:=Worksheets("Tempbt")
ActiveWindow.Zoom = 75 ' ansicht auf 75 prozent
With ActiveSheet.QueryTables.Add(Connection:= _
<a href=""URL;http://table.finance.yahoo.com/table.csv?s="">"URL;http://table.finance.yahoo.com/table.csv?s="</a> & Range("A1") & "&d=9&e=20&f=2005&g=d&a=0&b=3&c=20002", Destination:=Range("A7"))
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "30"
.WebPreFormattedTextToColumns = False
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = True
.Refresh BackgroundQuery:=False
End With
Columns("A7").End(xlDown).Select
Selection.TextToColumns Destination:=Range("A7"), DataType:=xlDelimited, ConsecutiveDelimiter:=True, Comma:=True, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1))
Next i
End Sub

-----------------
also ohne deinen code funktioniert die schleife und ohne die schleife funktioniert dein code. müsste doch irgendwie an der syntax liegen - aber bin ja kein experte:-)
Anzeige
Funktioniert!
20.10.2005 20:53:29
Christian
Es funktioniert, wenn ich hier
----------
Columns(1).TextToColumns Destination:=Range("A1"), _
DataType:=xlDelimited, Comma:=True
----------
Range("a1") lasse, obwohl a7 das feld ist, wo die daten beginnnen. Komischerweise wird trotzdem richtig sortiert? verstehe ich nicht, aber hauptsache es läuft.
vielen dank christoph
gruß
christian
AW: Funktioniert!
20.10.2005 21:10:19
Christoph
bei "Text in Spalten" wird nicht sortiert. Der Range gibt an, wo das Ergebnis ausgegeben werden soll. Da du zuvor die gesamte Spalte A als Quelle angegeben hast (die Angabe von "A7" im letzten Code ist hier schon falsch) kannst du diese nicht um 6 Zeilen runterschieben.
mehr als 65536 Zeilen gibts eben nicht, und dann kommt's zu dem benannten Fehler.
Ansonsten: verzichte auf die ganzen "Select" und referenziere sauber.
Gruß
Christoph
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige