Thema Datum  Von Nutzer Rating
Antwort
Rot Merkwürdiges Problem bei Webquery von Yahoo Finance in excel 2007
02.04.2012 18:35:23 Andrej Vogel
NotSolved
02.04.2012 18:49:55 Andrej Vogel
NotSolved

Ansicht des Beitrags:
Von:
Andrej Vogel
Datum:
02.04.2012 18:35:23
Views:
3188
Rating: Antwort:
  Ja
Thema:
Merkwürdiges Problem bei Webquery von Yahoo Finance in excel 2007

Ich habe ein VBA-Programm geschrieben, was historische Aktienkursdaten aus Yahoo Finance lädt. Bei Yahoo Finance können diese Kursdaten per CSV-Datei heruntergeladen werden, wobe ich auf diese Funktion per Webquery zugreife. Im Speziellen "besorge" ich mir so momentan die täglichen Kursdaten von 01.01.2011 - 31.12.2011 für ca. 70 Aktientitel.

Dabei sind manche Kurshistorien nicht vollständig. Bspw. geht die Historie von Aktie A nur von 01.04.2011 bis 31.12.2011 und Aktie B ist vollständig. Wenn ich das excel komplett schließe und wieder neu starte, dann passiert das Merkwürdige: Bei einem erneuten Durchlauf kann dann Aktie A vollständig sein, Aktie B aber wiederum nicht. Bei erneutem Schließen tut wieder B, A aber nicht... usw... ????

- Habe viel gegoogelt, aber zu diesem Probelm noch gar nichts gefunden.

- Kennt jemand das Problem?

- Weiß jemand, woran das liegen könnte?

- Hat jemand einen Tipp zur Behebung des Problems?

 

Bin dankbar für jeglichen Input! Bis auf Hinweise, das mein Code scheiße geschrieben ist. Das weiß ich... :-)

 

Sub GetPrices(aktie, startdate, enddate)

' aktie -> String-Array mit Kürzeln der Wertpapiere

Dim sheet1, sheet2 As String
sheet1 = "GetPrices"
sheet2 = "GetPrices2"

' Meldungen deaktivieren
Application.DisplayAlerts = False

'Sheets vorbereiten
    Sheets(sheet1).Select
    Cells.Select
    Selection.ClearContents
    Sheets(sheet2).Select
    Cells.Select
    Selection.ClearContents

'Formatierung von sheet1
    Sheets(sheet1).Select
    Cells.Select
    Selection.NumberFormat = "#,##0.00"
    Columns("A:A").Select
    Selection.NumberFormat = "m/d/yyyy"

' Deklarierung der Variablen
Dim a, b, c, d, e, f As Integer
Dim i, i2, i3 As Integer ' HilfsIndex-Variablen
Dim g As String
Dim run As Integer
Dim preis As Double
Dim run2, run3 As Date
Dim genlink As String


' Aus "startdate" und "enddate" (Yahoo) auslesen
' Anpassung der Werte von a und d für Link
a = Format(Month(startdate) - 1, "00")
b = Day(startdate)
c = Year(startdate)
d = Format(Month(enddate) - 1, "00")
e = Day(enddate)
f = Year(enddate)
g = "d" 'Intervall = daily

' Datumswerte schreiben
With ThisWorkbook.Sheets(sheet1)
.Range("A1").Value = "Date"
run2 = startdate
Do
i2 = DateDiff(g, startdate, run2)
.Range("A1").Offset(i2 + 1, 0).Value = run2
run2 = DateAdd(g, 1, run2)
Loop While run2 <= enddate
End With


' Ermitteln der nötigen Durchläufe, um alle Aktien durchzugehen
run = UBound(aktie)

For i = 1 To run
ThisWorkbook.Sheets(sheet2).Select

'Link erzeugen
genlink = "URL;" & "http://ichart.finance.yahoo.com/table.csv?s=" & aktie(i) & _
"&a=" & a & "&b=" & b & "&c=" & c & "&d=" & d & "&e=" & e & "&f=" & f & "&g=" & g & "&ignore=.csv"
' -> Bsp: http://ichart.finance.yahoo.com/table.csv?s=CIS.F&a=0&b=1&c=2011&d=4&e=9&f=2011&g=d&ignore=.csv

'Historische Kurse abrufen
With ActiveSheet.QueryTables.Add(Connection:=genlink, Destination:=Range("A1"))

.BackgroundQuery = True
.TablesOnlyFromHTML = False
.Refresh BackgroundQuery:=False
.SaveData = True

End With 'Range Query


ThisWorkbook.Sheets(sheet2).Range("A1").Select

Range(Selection, Selection.End(xlDown)).Select
Selection.TextToColumns _
Destination:=Range("A1"), _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=True, _
Semicolon:=False, _
Comma:=True, _
Space:=False, _
Other:=False

With ThisWorkbook
'Kopieren der Kurswerte in Spalte E in sheet1
For Each zelle In Range("E2:E500")
    Select Case zelle.Value
    Case Is <> ""
        i2 = DateDiff(g, startdate, zelle.Offset(0, -4).Value)
        If i2 >= 0 Then
            .Sheets(sheet1).[a1].Offset(i2 + 1, i).Font.ColorIndex = 1
            .Sheets(sheet1).[a1].Offset(i2 + 1, i).Value = zelle.Value
        End If
    End Select
Next zelle


' Löschen der Abfragewerte
Range(Selection, Selection.End(xlDown).End(xlToRight)).Select
Selection.QueryTable.Delete
Selection.ClearContents

Next i

' Leeren von sheet2
Sheets(sheet2).Select
Cells.Select
Selection.ClearContents
 
End Sub

 

Grüße,

Andrej


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Merkwürdiges Problem bei Webquery von Yahoo Finance in excel 2007
02.04.2012 18:35:23 Andrej Vogel
NotSolved
02.04.2012 18:49:55 Andrej Vogel
NotSolved