Zum Inhalt springen
mc-fly

Aktienkurse im Excel automatisch aktualisieren

Empfohlene Beiträge

UdonThani
vor 2 Stunden von Oli Garch:

ich fange mal den Ball und versuche es:

Nehmen wir an, das Wertpapiersymbol steht in Zelle C3
Dann schreiben wir die URL von @etf-friese z. B. in Zelle J3:

=WEBDIENST("https://query2.finance.yahoo.com/v10/finance/quoteSummary/"&C3&"?modules=price")

Wenn ich jetzt den Kurs in D3 haben möchte, schreibe ich in Zelle D3:

=WECHSELN(TEIL(J3;FINDEN("regularMarketPrice";J3)+27;FINDEN(",";TEIL(J3;FINDEN("regularMarketPrice";J3)+27;50))-1);".";",")/1

 

 

Vielen Dank, hat auf Anhieb funktioniert, ich kann langsam schon gar nicht mehr zählen wie oft du mir meine Datei gerettet hast ;-)

Ich habe die Formel noch ein bißchen für meine Zwecke umgebaut, dass ich direkt das Ergebnis bekomme und keine Verlinkung in J3 (in deinem Beispiel) machen muß - ging anstandslos.

 

Noch eine Frage dazu: Wenn ich die Werte für Vortag, Änderung in Währung, Änderung in %, Kursdatum und Kurszeit haben möchte, wie muß ich die Formel dann jeweils abändern?

Diesen Beitrag teilen


Link zum Beitrag
Oli Garch
vor 40 Minuten von UdonThani:

Wenn ich die Werte für Vortag, Änderung in Währung, Änderung in %, Kursdatum und Kurszeit haben möchte

das ist nicht so schwer.

Einfach in der oben besprochenen Formel nach dem jeweiligen Wert suchen (z. B. "regularMarketChange" ). Da die Suchausdrücke unterschiedlich lang sind, die Zahl "27" (2x) in der Formel entsprechend anpassen. Das Ergebnis sieht man beim Ausprobieren besser, wenn am Ende der Formel das "/1" zunächst weggelassen wird, weil sonst immer ein Fehler angezeigt wird, wenn man nicht gleich eine Zahl erwischt hat.

Aber hier gleich mal die Anpassungen:

regularMarketPreviousClose:   =WECHSELN(TEIL(J3;FINDEN("regularMarketPreviousClose";J3)+35;FINDEN(",";TEIL(J3;FINDEN("regularMarketPreviousClose";J3)+35;50))-1);".";",")/1

regularMarketChange:   =WECHSELN(TEIL(J3;FINDEN("regularMarketChange""";J3)+29;FINDEN(",";TEIL(J3;FINDEN("regularMarketChange""";J3)+29;50))-1);".";",")/1

regularMarketChangePercent:   =WECHSELN(TEIL(J3;FINDEN("regularMarketChangePercent";J3)+35;FINDEN(",";TEIL(J3;FINDEN("regularMarketChangePercent";J3)+35;50))-1);".";",")/1

 Bitte beachten: Da Excel regularMarketChange und regularMarketChangePercent hier nicht unterscheiden kann und bei der Suche beim ersten Auffinden der Zeichenfolge "regularMarketChange" hängen bleibt, musste ich die Zeichenfolge "regularMarketChange" noch um ein """ verlängern.

 

Bei Datum und Uhrzeit wird es ein bisschen tricky, weil Yahoo das UNIX-Zeit Format verwendet. Außerdem berücksichtigt die Formel Sommer und Winterzeit. Für Datum und Uhrzeit wird die gleiche Formel verwendet. Die Excel-Zelle muss nur entsprechend formatiert werden.

regularMarketTime:   =(TEIL(J3;FINDEN("regularMarketTime";J3)+19;FINDEN(",";TEIL(J3;FINDEN("regularMarketTime";J3)+19;20))-1)+WENN(UND(HEUTE()>=(DATUM(JAHR(HEUTE());4;0)-WOCHENTAG(DATUM(JAHR(HEUTE());4;0))+1);HEUTE()<=(DATUM(JAHR(HEUTE());11;0)-WOCHENTAG(DATUM(JAHR(HEUTE());11;0))+1));7200;3600))/86400+25569 

vor einer Stunde von UdonThani:

Ich habe die Formel noch ein bißchen für meine Zwecke umgebaut, dass ich direkt das Ergebnis bekomme und keine Verlinkung in J3 (in deinem Beispiel) machen muß

Über diese Vorgehensweise wurde hier auch schon diskutiert. Durch das viermalige Austauschen von "J3" durch die Webdienst-Abfrage wird Webdienst auch viermal ausgeführt. Das könnte bei der abzufragenden Stelle nicht besonders wünschenswert sein und auch das eigene Aktualisierungstempo beeinträchtigen. Kommt natürlich auch immer auf die Anzahl der Wertpapiere an.

Diesen Beitrag teilen


Link zum Beitrag
Privatier2029

Danke für die guten Tipps.

Funktioniert bei mir wieder für alle Aktien und ETFs.

 

Kryptos funktionieren aber mit der neuen Formel bei mir nicht.

Habe als Wertpapiersymbol ETH-EUR eingetragen.

 

Hat jemand dazu eine Idee?

Diesen Beitrag teilen


Link zum Beitrag
Oli Garch
vor einer Stunde von Privatier2029:

Kryptos funktionieren aber mit der neuen Formel bei mir nicht.

kann eigentlich nicht sein. Habe es mit ETH-EUR getestet.

Zelle A1:   ETH-EUR

Zelle A2:   =WEBDIENST("https://query2.finance.yahoo.com/v10/finance/quoteSummary/"&A1&"?modules=price")

Zelle A3:   =WECHSELN(TEIL(A2;FINDEN("regularMarketPrice";A2)+27;FINDEN(",";TEIL(A2;FINDEN("regularMarketPrice";A2)+27;50))-1);".";",")/1

Anzeige in A3: 1665,139

Muss sich wohl bei dir ein kleiner Fehler eingeschlichen haben.

Diesen Beitrag teilen


Link zum Beitrag
UdonThani
vor 20 Stunden von Oli Garch:

das ist nicht so schwer.

Einfach in der oben besprochenen Formel nach dem jeweiligen Wert suchen (z. B. "regularMarketChange" ). Da die Suchausdrücke unterschiedlich lang sind, die Zahl "27" (2x) in der Formel entsprechend anpassen. Das Ergebnis sieht man beim Ausprobieren besser, wenn am Ende der Formel das "/1" zunächst weggelassen wird, weil sonst immer ein Fehler angezeigt wird, wenn man nicht gleich eine Zahl erwischt hat.

Aber hier gleich mal die Anpassungen:

 

Vielen Dank - hat alles einwandfrei funktioniert. Meine Datei läuft wieder. 

 

vor 20 Stunden von Oli Garch:

Über diese Vorgehensweise wurde hier auch schon diskutiert. Durch das viermalige Austauschen von "J3" durch die Webdienst-Abfrage wird Webdienst auch viermal ausgeführt. Das könnte bei der abzufragenden Stelle nicht besonders wünschenswert sein und auch das eigene Aktualisierungstempo beeinträchtigen. Kommt natürlich auch immer auf die Anzahl der Wertpapiere an.

 

Das war mir bislang nicht bewußt. Ich rufe eine niedrige zweistellige Anzahl von Wertpapieren ab. Habe aber jetzt dennoch meine Datei um eine Hilfsspalte erweitert und nutze deine Formel im Original.

 

Dann hoffen wir jetzt mal dass diese Lösung jetzt eine Weile läuft und Yahoo nicht weitere Änderungen vornimmt.

Diesen Beitrag teilen


Link zum Beitrag
ChuckysEnkel
· bearbeitet von ChuckysEnkel
10 hours ago, Oli Garch said:

kann eigentlich nicht sein. Habe es mit ETH-EUR getestet.

Zelle A1:   ETH-EUR

Zelle A2:   =WEBDIENST("https://query2.finance.yahoo.com/v10/finance/quoteSummary/"&A1&"?modules=price")

Zelle A3:   =WECHSELN(TEIL(A2;FINDEN("regularMarketPrice";A2)+27;FINDEN(",";TEIL(A2;FINDEN("regularMarketPrice";A2)+27;50))-1);".";",")/1

Anzeige in A3: 1665,139

Muss sich wohl bei dir ein kleiner Fehler eingeschlichen haben.

Die Variante funktioniert bei mir auch. In der YahooKursUndKennzahlen v1.0.xlsm stand aber doch oben in einer separaten Zelle die entscheidende Formel 

 

https://query1.finance.yahoo.com/v7/finance/quote?symbols=

bzw. jüngst

https://query1.finance.yahoo.com/v6/finance/quote?symbols=

 

Habe ich es richtig verstanden, dass es keine Möglichkeit gibt, diese Formel einfach irgendwie anders anzupassen so dass der vorherige modus operandi wieder läuft? Sry, bin kein Excel-Experte :-P

 

Edit: Noch eine Frage: wenn "regularMarketPrice" = aktueller Kurs ist, was ist dann der Suchbegriff für "Vortageskurs"?

Diesen Beitrag teilen


Link zum Beitrag
etf-friese
vor 24 Minuten von ChuckysEnkel:

wenn "regularMarketPrice" = aktueller Kurs ist, was ist dann der Suchbegriff für "Vortageskurs"?

regularMarketPreviousClose

vor 24 Minuten von ChuckysEnkel:

Habe ich es richtig verstanden, dass es keine Möglichkeit gibt, diese Formel einfach irgendwie anders anzupassen so dass der vorherige modus operandi wieder läuft?

Das ist keine Formel sondern ein Request an die Yahoo-API, deren Aussehen wird von Yahoo bestimmt. Wenn die V7/V6 nicht mehr bedient wird, dann muß man eben z.B. die V10 nutzen. Und der Request an die V10 sieht eben anders aus als früher. Hat mit Excel/LibreOffice nichts zu tun - nur mit Yahoo.

Diesen Beitrag teilen


Link zum Beitrag
Oli Garch
vor 12 Minuten von ChuckysEnkel:

dass es keine Möglichkeit gibt, diese Formel einfach irgendwie anders anzupassen

@ChuckysEnkel,

nein, diese URLs funktionieren nicht mehr. Da lässt sich nichts mehr anpassen. Du musst auf die Alternative umstellen.

vor 17 Minuten von ChuckysEnkel:

was ist dann der Suchbegriff für "Vortageskurs"?

regularMarketPreviousClose

nur den Suchbegriff ändern reicht aber nicht. Da die Längen der Suchbegriffe unterschiedlich sind, steht das erste Zeichen des gesuchten Teilstrings immer an einer anderen Stelle und muss in der Formel zweimal geändert werden.

Darauf wurde bereits 5 Beiträge früher (#777) eingegangen.

Diesen Beitrag teilen


Link zum Beitrag
akista

Hat evtl. jemand von Euch auch die Abfrage für Kurszeit und Kursdatum

Bisher waren die so

=(WERT(TEIL(WEBDIENST(Adresse&$B7);SUCHEN("regularMarketTime";WEBDIENST(Adresse&$B7))+19;FINDEN(",";TEIL(WEBDIENST(Adresse&$B7);SUCHEN("regularMarketTime";WEBDIENST(Adresse&$B7))+19;18))-1))+7200) / 86400 + 25569

B7 ist dabei mein Aktienkürzel

 

Wenn ich es richtig verstehe, müssen auch die verschiedenen Zahlen angepasst werden. Aber ich habe keine Ahnung wie.

Diesen Beitrag teilen


Link zum Beitrag
Oli Garch

@akista

vor 26 Minuten von akista:

Hat evtl. jemand von Euch auch die Abfrage für Kurszeit und Kursdatum

schreibe in das Feld mit dem Namen Adresse die jetzt funktionierende URL:
https://query2.finance.yahoo.com/v10/finance/quoteSummary/
In deiner Formel fügst du hinter B7 jeweils:
&"?modules=price"
an. Das müsste dann funktionieren.

Diesen Beitrag teilen


Link zum Beitrag
Privatier2029
vor 17 Stunden von Oli Garch:

kann eigentlich nicht sein. Habe es mit ETH-EUR getestet.

Zelle A1:   ETH-EUR

Zelle A2:   =WEBDIENST("https://query2.finance.yahoo.com/v10/finance/quoteSummary/"&A1&"?modules=price")

Zelle A3:   =WECHSELN(TEIL(A2;FINDEN("regularMarketPrice";A2)+27;FINDEN(",";TEIL(A2;FINDEN("regularMarketPrice";A2)+27;50))-1);".";",")/1

Anzeige in A3: 1665,139

Muss sich wohl bei dir ein kleiner Fehler eingeschlichen haben.

Jetzt funktionierts bei mir auch (ohne was zu ändern).

Danke für deine Rückmeldung.

 

Diesen Beitrag teilen


Link zum Beitrag
MaexNRW

Ich hab auch noch eine Frage dazu: In der vorherigen Version gab es für die Abfrage der Dividendenzahlungen noch die Felder "trailingAnnualDividendRate" und "trailingAnnualDividendYield"

 

In der Sicht "modules=price" scheinen sie nicht mehr vorhanden zu sein. Hat wer eine Übersicht, welche modules es noch gibt. Für die Finanzkennzahlen hab ich z.B. modules=financialData gefunden.

Diesen Beitrag teilen


Link zum Beitrag
MaexNRW

Ich habe es gefunden.

Es gibt noch die folgenden Module:

price, assetProfile, summaryDetail, incomeStatementHistory, balanceSheetHistory, defaultKeyStatistics, financialData,calendarEvents, recommendationTrend, upgradeDowngradeHistory, majorHoldersBreakdown

 

Deutlich mehr Kennzahlen als im Modul "price", gibt es im Modul "summaryDetail". Dort stehen auch die Dividendenzahlungen:

 

Wenn das Symbol in C3 steht, könnt ihr die Dividendenzahlung pro Aktien wie folgt abfragen:

 

=WENNFEHLER(WECHSELN(TEIL(WEBDIENST("https://query2.finance.yahoo.com/v10/finance/quoteSummary/"&C3&"?modules=summaryDetail");SUCHEN("dividendRate"":";WEBDIENST("https://query2.finance.yahoo.com/v10/finance/quoteSummary/"&C3&"?modules=summaryDetail"))+21;FINDEN(",";TEIL(WEBDIENST("https://query2.finance.yahoo.com/v10/finance/quoteSummary/"&C3&"?modules=summaryDetail");SUCHEN("dividendRate"":";WEBDIENST("https://query2.finance.yahoo.com/v10/finance/quoteSummary/"&C3&"?modules=summaryDetail"))+21;50))-1);".";",")/1;"-")

 

Und die Dividendenrendite wie folgt:

=WENNFEHLER(WECHSELN(TEIL(WEBDIENST("https://query2.finance.yahoo.com/v10/finance/quoteSummary/"&C3&"?modules=summaryDetail");SUCHEN("dividendYield"":";WEBDIENST("https://query2.finance.yahoo.com/v10/finance/quoteSummary/"&C3&"?modules=summaryDetail"))+22;FINDEN(",";TEIL(WEBDIENST("https://query2.finance.yahoo.com/v10/finance/quoteSummary/"&C3&"?modules=summaryDetail");SUCHEN("dividendYield"":";WEBDIENST("https://query2.finance.yahoo.com/v10/finance/quoteSummary/"&C3&"?modules=summaryDetail"))+22;50))-1);".";",")/1;"-")

Diesen Beitrag teilen


Link zum Beitrag
Oli Garch
vor 25 Minuten von MaexNRW:

Hat wer eine Übersicht, welche modules es noch gibt

Hallo @MaexNRW

ergänzend zu deinen Recherchen noch ein Hinweis. Ich habe ca. vor einem Jahr hier mal eine Excel-Datei eingestellt, in der man nach Eingabe eines Wertpapiersymbols alle verfügbaren Module von Yahoo anzeigen lassen kann. Die Datei findest du unter diesem Beitrag: #683 jTest.xlm. Wenn trotz niedrig eingestellter Makrosicherheit sich das Auswahlelement in der Datei nicht anklicken lässt. Unter Datei - Rechtsklick - weitere Optionen - Eigenschaften - rechts unten das Kästchen  ZULASSEN anklicken.

In der Tabelle gibt es auch ein Tabellenblatt mit allen verfügbaren Modulen.

Diesen Beitrag teilen


Link zum Beitrag
UnHombre
Am 24.5.2023 um 20:17 von Oli Garch:

ich fange mal den Ball und versuche es:

Nehmen wir an, das Wertpapiersymbol steht in Zelle C3
Dann schreiben wir die URL von @etf-friese z. B. in Zelle J3:

=WEBDIENST("https://query2.finance.yahoo.com/v10/finance/quoteSummary/"&C3&"?modules=price")

Wenn ich jetzt den Kurs in D3 haben möchte, schreibe ich in Zelle D3:

=WECHSELN(TEIL(J3;FINDEN("regularMarketPrice";J3)+27;FINDEN(",";TEIL(J3;FINDEN("regularMarketPrice";J3)+27;50))-1);".";",")/1

 

Hallo,

 

ich habe ein wenig gebastelt, habe es aber nicht hinbekommen.

 

Wie baue ich diese neue Abfrage in die Beispieldatei "YahooKursUndKennzahlen v1.0.xlsm" ein?

 

Wenn ich es richtig sehe, muss ich u.a. die 'alte' Zeile

XML.Open "GET", "https://query1.finance.yahoo.com/v7/finance/quote?symbols=" & Ticker, False

zweimal modifizieren?!?

 

Ich bitte um Nachsicht.

 

 

Diesen Beitrag teilen


Link zum Beitrag
enormo
vor einer Stunde von UnHombre:

Hallo,

 

ich habe ein wenig gebastelt, habe es aber nicht hinbekommen.

 

Wie baue ich diese neue Abfrage in die Beispieldatei "YahooKursUndKennzahlen v1.0.xlsm" ein?

 

Wenn ich es richtig sehe, muss ich u.a. die 'alte' Zeile

XML.Open "GET", "https://query1.finance.yahoo.com/v7/finance/quote?symbols=" & Ticker, False

zweimal modifizieren?!?

 

Ich bitte um Nachsicht.

 

 

daran wäre ich auch sehr interessiert, wie ich die genannte Datei anpassen muss.

Herzlichen Dank!!!!!

Diesen Beitrag teilen


Link zum Beitrag
enormo

mmhhh

also, wenn ich die posts so richtig lese, wird das mit der Beispielsdatei "YahooKursUndKennzahlen v1.0.xlsm" wegen der Umstellung nicht mehr funktionieren, oder???

 

Was ich nun umsetzen konnte ist die Lösung aus #779.

Allerdings schaffe ich es nicht currency sowie Kurszeit und Kursdatum (wie in #785 beschrieben) umzusetzen.

Es wäre wirklich klasse, wenn mir einer dabei helfen könnte die drei Parameter mit dem neuen Weg abrufen zu können.

Besten Dank!!!!

Diesen Beitrag teilen


Link zum Beitrag
ChuckysEnkel
· bearbeitet von ChuckysEnkel

Vielen Dank @Oli Garch für den Wink. Bin zwar kein Excel-Held, habe es aber glaube ich nach ein bisschen Bastelei hinbekommen und kann damit zumindest meinem Vorpostern@UnHombre helfen (siehe Anhang)? 

Zeile 2-3 zeigen Euch an wie das Symbol für Aktien eingetragen werden muss. Zeile 4 für normale Währungen. Zeile 5 für Kryptos. Ich hoffe, das hilft schon mal weiter? 

 

Edit: Umwandlung ISIN in Symbole entnehme ich mir immer via https://www.xetra.com/xetra-de/ wo das ausgewiesen wird. Einfach Symbol mit .DE oder (falls Nischenpapier) ggf. auch mit .F ergänzen. Funktioniert meistens.


Was mich noch interessieren würde, ist ob irgendwo eine Übersicht zu organisieren wäre. Welche Informationen sonst noch so (und wie) abrufen könnte. Mich würde z.B. so eine Nerd-Info wie Anzahl der Aktien des Unternehmens insgesamt interessieren :-) 

230530 Hilfstabelle Akitenkurse in Excel WPF V1.0.xlsx

Diesen Beitrag teilen


Link zum Beitrag
enormo

Hallo zusammen,

 

erst einmal möchte ich mich herzlich bei allen, die hier immer tatkräftig unterstützen bedanken.

Dank dem support konnte ich vieles seit diversen yahoo - Umstellungen umsetzen.

 

Gerade hänge ich aber an einigen Stellen und bitte euch daher, einen Blick auf die beigefügte Tabelle zu werfen.

Dank @Oli Garch, @MaexNRW und weiteren konnte ich mit der neuen Abfrage price (#779), regularMarketTime mit Datum (#777) und dividendRate (#778) umsetzen.

Ich habe dann versucht in Zeile 4 irgendwie durch ersetzen der Parameter in den beiden verschiedenen Modulen Price und summaryDetail meine gewünschten Ausgaben hinzubekommen. Aber leider erfolglos.
 

Im Einzelnen hätte ich gerne wieder "shortName", "currency", fullExchangeName", "regularMarketTime" mit Uhrzeit (statt Datum).

Vielen Dank für Eure Hilfe!!

yahoofinanceabfragen.xlsx

Diesen Beitrag teilen


Link zum Beitrag
Oli Garch

Hallo @enormo,

bin gerade bis zum Wochenende nicht im Lande und komme nicht an meine Dateien heran. Deshalb nur soviel: Für die Uhrzeit einfach in die Zelle das gleiche wie für das Datum eingeben und die Zelle als Uhrzeit formatieren.

Für weitere Parameter, besonders alphanumerische, benötigst du am Ende der Formel das "/1" nicht. In der Formel ersetzt du die Zahl 27 (mehrmals) wie in regularMarketPrice durch 9 + Anzahl der Buchstaben deines gesuchten Parameters.

Viel Erfolg!

Diesen Beitrag teilen


Link zum Beitrag
enormo
vor 36 Minuten von Oli Garch:

Hallo @enormo,

bin gerade bis zum Wochenende nicht im Lande und komme nicht an meine Dateien heran. Deshalb nur soviel: Für die Uhrzeit einfach in die Zelle das gleiche wie für das Datum eingeben und die Zelle als Uhrzeit formatieren.

Für weitere Parameter, besonders alphanumerische, benötigst du am Ende der Formel das "/1" nicht. In der Formel ersetzt du die Zahl 27 (mehrmals) wie in regularMarketPrice durch 9 + Anzahl der Buchstaben deines gesuchten Parameters.

Viel Erfolg!

Besten Dank für die schnelle Rückmeldung. Ich hoffe Du bist wegen einem wunderschönen Urlaub nicht im Lande ;):)


Uhrzeit Format ist erledigt - manchmal kann es so einfach sein :)
currency hat hingegen nur teilweise funktioniert +27 habe ich ersetzt durch +9+2   

allerdings wird am Ende der Währung ein " mit ausgegeben zB GBP" oder USD"

Und bei "shortName" und "fullExchangeName" bin ich irgendwie weiter lost. Bin mir aber auch nicht sicher, ob die in den Modulen price oder summaryDetail sind.

 

Falls Du nächste Woche mal die Zeit findest, wäre es klasse, wenn Du mir nochmal helfen könntest....

Dir eine gute Zeit & nochmal vielen Dank!!

Diesen Beitrag teilen


Link zum Beitrag
Oli Garch

Da war ich wohl nicht präzise genug. Ich meinte Anzahl der Buchstaben des Parameter-Namens (currency = 8) + 9 = 17. Also statt 27 die 17.

Und ja, ein schöner Urlaub.

Diesen Beitrag teilen


Link zum Beitrag
enormo
vor 35 Minuten von Oli Garch:

Da war ich wohl nicht präzise genug. Ich meinte Anzahl der Buchstaben des Parameter-Namens (currency = 8) + 9 = 17. Also statt 27 die 17.

Und ja, ein schöner Urlaub.

puh - dann hab ich ja quasi schon ein schlechtes Gewissen für die Urlaubsstörung .... :)

 

der Befehl =WECHSELN(TEIL(B4;FINDEN("currency";B4)+17;FINDEN(",";TEIL(B4;FINDEN("currency";B4)+17;50))-1);".";",")

gibt einen Fehler quoteSourceName":"Delayed Quote"

 

und der Befehl =WECHSELN(TEIL(B5;FINDEN("currency";B5)+8+2;FINDEN(",";TEIL(B5;FINDEN("currency";B5)+8+2;50))-1);".";",")

gibt die Währung in " aus, also zB "USD" statt USD

 

B4 und B5 sind jeweils die Webdienst Funktion mit dem Modul price

 

Bitte erst nach dem Urlaub antworten - lass es Dir gut gehen!!!!

Diesen Beitrag teilen


Link zum Beitrag
Oli Garch

Hallo @UnHombre und @enormo
die Makros in der Datei "YahooKursUndKennzahlen v1.0.xlsm" lassen sich schlecht anpassen. Deshalb hier ein neues:

 

Function parseYahoo(strSymbol As String, strKennzahl As String, strModul As String) As Variant
Dim strResponse As String
Dim objXML As Object
Dim strZeichen As String
Set objXML = CreateObject("MSXML2.ServerXMLHTTP")
    objXML.Open "GET", "https://query1.finance.yahoo.com/v10/finance/quoteSummary/" & strSymbol & "?modules=" & strModul, False
objXML.send
On Error Resume Next
strResponse = objXML.responsetext
strResponse = Mid(strResponse, InStr(strResponse, strKennzahl), 50)
If (InStr(strKennzahl, "Time") Or InStr(strKennzahl, "Date")) And InStr(strKennzahl, "full") = 0 Then
    strResponse = Mid(strResponse, InStr(strResponse, strKennzahl), 50)
    strResponse = Mid(strResponse, InStr(strResponse, ":") + 1, 50)
    strResponse = Left(strResponse, InStr(strResponse, ",") - 1)
            If Date >= DateSerial(Year(Date), 4, 0) And Date <= DateSerial(Year(Date), 11, 0) - Weekday(DateSerial(Year(Date), 11, 0)) + 1 Then
                strResponse = strResponse + 7200
                Else: strResponse = strResponse + 3600
            End If
            strResponse = (strResponse / 86400) + 25569
    parseYahoo = strResponse
Else:
    strResponse = Mid(strResponse, InStr(strResponse, "{") + 7, 50)
    strResponse = Left(strResponse, InStr(strResponse, ",") - 1)
End If
If IsNumeric(strResponse) And strResponse <> "" Then
    strResponse = Replace(strResponse, ".", ",")
    parseYahoo = CDbl(strResponse)
End If
If IsNumeric(Right(strResponse, 1)) = False And Len(strResponse) > 0 And IsNumeric(Left(strResponse, 1)) Then
    strZeichen = Right(strResponse, 1)
    strResponse = Left(strResponse, Len(strResponse) - 1)
    strResponse = Replace(strResponse, ".", ",") & strZeichen
    parseYahoo = strResponse
End If
End Function

 

Einfach in das vorhandene VBA-Modul kopieren. Die alten Makros können gelöscht werden.
Die Funktion heißt jetzt parseYahoo und alle Formeln müssen entsprechend folgendermaßen geändert werden:
=parseYahoo($C3;D$2;"price") oder =parseYahoo($C3;D$2;"summaryDetail")
In C3 steht hier das Wertpapiersymbol und in D2 der gesuchte Parameter (ist in der Beispieldatei die Spaltenüberschrift.
Zu beachten: regularMarketChange" wird ein ' " ' angehägt, weil sonst eine Verwechselung mit regularMarketChangePercent auftritt.

 

Welche Funktion verwendet das Modul "price" und welches das Modul "summaryDetail"?
Parameter in "price":
maxAge, preMarketChange, preMarketPrice, postMarketChange, postMarketPrice, regularMarketChangePercent, regularMarketChange, regularMarketTime,
priceHint, regularMarketPrice, regularMarketDayHigh, regularMarketDayLow, regularMarketVolume, averageDailyVolume10Day,
averageDailyVolume3Month, regularMarketPreviousClose, regularMarketSource, regularMarketOpen, strikePrice, openInterest, exchange,
exchangeName, exchangeDataDelayedBy, marketState, quoteType, symbol, underlyingSymbol, shortName, longName, currency, quoteSourceName,
currencySymbol, fromCurrency, toCurrency, lastMarket, volume24Hr, volumeAllCurrencies, circulatingSupply, marketCap

Parameter in "summaryDetail":
maxAge,    priceHint, previousClose, open, dayLow, dayHigh, regularMarketPreviousClose, regularMarketOpen, regularMarketDayLow, regularMarketDayHigh, dividendRate, dividendYield,    exDividendDate,    payoutRatio, fiveYearAvgDividendYield, beta, forwardPE, volume, regularMarketVolume, averageVolume, averageVolume10days, averageDailyVolume10Day, bid,    ask, bidSize, askSize, marketCap, yield, ytdReturn, totalAssets, expireDate, strikePrice,  openInterest, fiftyTwoWeekLow, fiftyTwoWeekHigh, priceToSalesTrailing12Months,    fiftyDayAverage, twoHundredDayAverage, trailingAnnualDividendRate, trailingAnnualDividendYield, navPrice, currency, fromCurrency, toCurrency, lastMarket, coinMarketCapLink, volume24Hr, volumeAllCurrencies, circulatingSupply, algorithm, maxSupply, startDate, tradeable

 

Diesen Beitrag teilen


Link zum Beitrag
Oli Garch
Am 1.6.2023 um 11:46 von enormo:

Im Einzelnen hätte ich gerne wieder "shortName", "currency", fullExchangeName", "regularMarketTime" mit Uhrzeit (statt Datum).

auf der Grundlage deiner Tabelle aus Beitrag #794 sind die Formeln

shortName:

=WECHSELN(TEIL(B4;FINDEN("shortName";B4)+12;FINDEN(",";TEIL(B4;FINDEN("shortName";B4)+12;50))-2);".";",")

currency:

=WECHSELN(TEIL($B4;FINDEN("currency";$B4)+11;FINDEN(",";TEIL($B4;FINDEN("currency";$B4)+11;50))-2);".";",")

exchangeName (also nicht : fullExchangeName - hab ich nirgendwo mehr gefunden):

=WECHSELN(TEIL($B4;FINDEN("exchangeName";$B4)+15;FINDEN(",";TEIL($B4;FINDEN("exchangeName";$B4)+15;50))-2);".";",")

regularMarketTime:

=(TEIL($B4;SUCHEN("regularMarketTime";$B4)+19;FINDEN(",";TEIL($B4;SUCHEN("regularMarketTime";$B4)+19;50))-1)+WENN(UND(HEUTE()>=(DATUM(JAHR(HEUTE());4;0)-WOCHENTAG(DATUM(JAHR(HEUTE());4;0))+1);HEUTE()<=(DATUM(JAHR(HEUTE());11;0)-WOCHENTAG(DATUM(JAHR(HEUTE());11;0))+1));7200;3600))/86400+25569

dividendRate:

=WECHSELN(TEIL(C4;FINDEN("dividendRate";C4)+21;FINDEN(",";TEIL(C4;FINDEN("dividendRate";C4)+21;50))-1);".";",")/1

 

alle Werte bis auf dividendRate sind aus dem Modul "price", dividendRate aus dem Modul "summaryDetail". Bei dir in der Tabelle in Zelle B4 und C4 (Ergebnis deiner Webdienstabfrage).

Und um es für Mitleser etwas transparenter zu machen: In B4 steht:

=WEBDIENST("https://query2.finance.yahoo.com/v10/finance/quoteSummary/"&A4&"?modules=price")

In A4 befindet sich das Wertpapiersymbol.

Diesen Beitrag teilen


Link zum Beitrag

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden

×
×
  • Neu erstellen...