Ich habe ein kleines Excel VBA-Makro, das den Lagerwert für eine bestimmte Firma an einem bestimmten Tag abruft. Die Firma wird spezifiziert, indem ihr Aktiensymbol ("AZO" für AutoZone, "WMT" für Wal-Mart, usw.) übergeben wird, und das Datum ist ein tatsächlicher Datumswert, der von einer benachbarten Zelle abgerufen wird.Excel VBA-Makro funktioniert nicht mehr (Mögliches Problem mit http.Send)
Es hat seit 2,5 Jahren wunderbar funktioniert, aber diese Woche hat es einfach aufgehört zu arbeiten, obwohl ich überhaupt nichts geändert habe. Wenn das Makro einen Wert zurückgeben soll, wird jetzt nur #WERT zurückgegeben !. Wenn ich den Code durchgehe, funktioniert alles gut, bis ich zur .Send() komme, wo es einfach aufhört (keine Fehlermeldungen oder Hinweise darauf, was schief gelaufen ist; es hört einfach auf, als ob die Ausführung beendet wäre). Ich habe versucht, eine On Error-Klausel hinzuzufügen, aber es wird nicht getroffen. Hinweis: Ich denke, es macht keinen Unterschied, aber ursprünglich hatte ich http.Send ohne Klammern, aber ich sah viele Beispiele mit (""), also fügte ich hinzu, aber es scheint keinen Effekt zu haben.
Meine VBA-Erfahrung ist sehr begrenzt, so dass ich gehofft hatte, dass jemand mich in die richtige Richtung zeigen könnte.
Code:
Function StockQuote(strTicker As String, Optional dtDate As Variant)
' Date is optional - if omitted, use today. If value is not a date, throw error.
If IsMissing(dtDate) Then
dtDate = Date
Else
If Not (IsDate(dtDate)) Then
StockQuote = CVErr(xlErrNum)
End If
End If
Dim dtPrevDate As Date
Dim strURL As String, strCSV As String, strRows() As String, strColumns() As String
Dim dbClose As Double
dtPrevDate = dtDate - 7
' Compile the request URL with start date and end date
strURL = "http://ichart.finance.yahoo.com/table.csv?s=" & strTicker & _
"&a=" & Month(dtPrevDate) - 1 & _
"&b=" & Day(dtPrevDate) & _
"&c=" & Year(dtPrevDate) & _
"&d=" & Month(dtDate) - 1 & _
"&e=" & Day(dtDate) & _
"&f=" & Year(dtDate) & _
"&g=d&ignore=.csv"
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", strURL, False
http.Send ("")
strCSV = http.responseText
' The most recent information is in row 2, just below the table headings.
' The price close is the 5th entry
strRows() = Split(strCSV, Chr(10)) ' split the CSV into rows
strColumns = Split(strRows(1), ",") ' split the relevant row into columns. 1 means 2nd row, starting at index 0
dbClose = strColumns(4) ' 4 means: 5th position, starting at index 0
StockQuote = dbClose
Set http = Nothing
End Function
scheint 'Yahoo' in 21. Jahrhundert angekommen ist und verwendet nun verschlüsselt' HTTP' - 'HTTPS'. Versuchen Sie 'strURL =" https://ichart.finance.yahoo.com/table.csv?s= "& strTicker & _' ... –
Buchstäblich ein Buchstabe behebt alles ... Zahlen. Danke für die Hilfe! – jheaton3