Jump to content
mc-fly

Aktienkurse im Excel automatisch aktualisieren

Recommended Posts

Oli Garch
Posted
vor 11 Minuten von driller:

Test: Datei gestartet und DTE übernehmen--> s. screenshot u. keine Eintrage in Tab Histo..
mehrere Tage eingestellt : wird in msgbox angezeigt, Kurshisto leer

Ist ja irre. Kann ich gerade nicht nachvollziehen. Habe mir auch die Datei heruntergeladen, gelben Warnhinweis mit ok bestätigt, gespeichert, DTE in Formular eingetragen und alles ok.

Hast du vielleicht bei Excel oder Windows ein anderes Gebietsschema (Sprache, Tausenderzeichen ...) eingestellt?

Share this post


Link to post
driller
Posted
vor 1 Minute von Oli Garch:

Ist ja irre. Kann ich gerade nicht nachvollziehen. Habe mir auch die Datei heruntergeladen, gelben Warnhinweis mit ok bestätigt, gespeichert, DTE in Formular eingetragen und alles ok.

Hast du vielleicht bei Excel oder Windows ein anderes Gebietsschema (Sprache, Tausenderzeichen ...) eingestellt?

hast du Zeit für chat ? skype, teamviewer, ?

gehe davon aus, dass setups bei mir anders sind:   win10, excel 2016 = (2013), engl., T-Zeichen ,

Share this post


Link to post
Oli Garch
Posted
vor 2 Minuten von driller:

hast du Zeit für chat ? skype, teamviewer, ?

das geht gerade schlecht.

Aber der Hinweis auf engl. wird wohl die Lösung sein. (was ist T-Zeichen?).

Um das  zu berücksichtigen und zu testen werde ich etwas Zeit benötigen.

Share this post


Link to post
driller
Posted
vor 1 Minute von Oli Garch:

das geht gerade schlecht.

Aber der Hinweis auf engl. wird wohl die Lösung sein. (was ist T-Zeichen?).

Um das  zu berücksichtigen und zu testen werde ich etwas Zeit benötigen.

werd im vba explorer mal schrittweise durchforsten !
melde mich später wieder, danke
 

Share this post


Link to post
Oli Garch
Posted

@driller
habe mal zum Probieren mein Excel auf Englisch und Dezimaltrennzeichen auf Punkt umgestellt, es funktioniert aber noch immer ohne Fehler, nur dass die Kommas jetzt Punkte sind (entspricht wohl im Ganzen noch nicht deinem System).
Wenn du selber mal testest, deaktiviere mal im Sub "KursDownload" die 15. Zeile: Application.DisplayAlerts = False. Dann müsste das Makro an der fehlerhaften Stelle stehenbleiben. Dann sehen wir weiter.

Kurse werden ja bei dir erst einmal geladen, wie aus deinem Screenshot hervorgeht. Erst später entsteht der Fehler.

Share this post


Link to post
driller
Posted

danke, melde mich später :-)

Share this post


Link to post
driller
Posted

Test- Zwischenergebnis:
die msgbox entält über  'XML.responseText'  die Kursdaten.
danach wird nichts auf die Tabelle 'KursHisto'  geschrieben.
soweit bin ich jetzt gekommen. Irgend ein Tipp/Hinweis ?

Share this post


Link to post
Oli Garch
Posted

Leider konnte ich deinen Fehler bei mir nicht nachstellen. Irgendwie muss es wohl mit deiner Ländereinstellung zusammenhängen.
Du musst herausfinden, an welcher Stelle im Makro der Fehler verursacht wird.
Da ich nicht weiß, wie weit du dich auskennst, beschreibe ich mal ausführlich wie ich vorgehen würde:
- Datei öffnen,  mit Alt+F11 den VB-Editor starten
- im VBA-Project der Datei Modul1 auswählen
- finde das Makro mit dem Namen KursDownload
- setze einen Haltepunkt etwa bei Zeile "XML.send", indem du mit der Maus in die senkrechte Leiste gleich links neben dem Code klickst. Es erscheint ein dicker Punkt in der Leiste und die Codezeile rechts daneben wird markiert.
- Nach dieser Vorbereitung lass dir wieder die Excel-Tabelle anzeigen und starte ganz normal den Eingabedialog
- mit dem Klick auf den "Übernahme"-Button in der Eingabemaske startest du das Makro
- es wird jetzt automatisch das VB-Editor-Fenster angezeigt
- das Makro ist am vorher eingestellten Haltepunkt gestoppt. Die Codezeile ist gelb unterlegt
- jetzt kannst du auf der Tastatur mit der Taste F8 Zeile für Zeile das Makro abarbeiten (Einzelschritt)
Entscheidend ist, an welcher Zeile der Fehler passiert. Von dieser Zeile springt bei einem Fehler das Makro zur Codezeile "Errorhandler:".
Eigentlich müsste auch eine Fehlermeldung angezeigt und das Makro gestoppt werden, wenn du die Zeile "Application.DisplayAlerts = False" deaktivierst, indem ein Hochkomma (') an den Zeilenanfang gesetzt wird.
Ich bin gespannt auf das Ergebnis.

Share this post


Link to post
Flughafen
Posted

Hallo Leute,

 

wie kann ich bitte von Tradegate den Last-Kurs in Excel (VBA) einesen? Z.B. https://www.tradegate.de/orderbuch.php?isin=IE00BFY0GT14

 

 

grafik.png.b9f6b9db6fa705a78778df2249e1a43d.png

 

Es gab in diesem Thema bereits diese Frage, aber die Antwort ist bereits gelöscht. :( Ich habe mir auch den VBA Macro-Code in der Datei YahooHistoQuotes v2.02 von @Oli Garch angesehen. Insgesamt ist die Logik verständlich, aber im Detail zu kompliziert, weil es neben dem Einlesen die Makros dort noch viele andere Funktionen gibt. Diese Funktionen lesen die Kurse in einer Schleife für mehrere Tage ein, mit Hilfe einer Form für manuelle Eingabe und speichern die Ergebnisse in einer anderen, externen Datei. In dieser Komplexität blicke ich das reine Einlesen leider nicht genau durch. Meine Excel-VBA-Kenntnisse sind leider nicht ausreichend, um all diese Makros zu verstehen.

 

Ich brauche ein Makro, wenn ich es ausführe, soll es den jetzigen Kurs von der Tradegate-Seite in z.B. die feste Excel-Zelle M2 reinschreiben. Den Kurs für jetzt, nicht für andere Tage. In dem aktuellen Excel-Sheet.

 

Kann mir bitte jemand helfen?

 

Viele Grüße,

Flug

 

 

Share this post


Link to post
Der T
Posted
Am 1.5.2022 um 12:54 von Oli Garch:

Ab Excel 2013.

Früher gab es ja mal eine Yahoo finance API. Da konnte man sehr komfortabel Kurse und andere Daten laden. Die Zeiten sind lange vorbei. Die Daten sind aber alle noch zu finden, wenn man die URLs kennt. Im Netz findet man auch zahlreiche Nachbauten der Finance-API, meist in Python geschrieben auch mit Tutorials (meist in Englisch), wovon ich aber eher nichts verstehe.
Was ich herausgefunden habe, ist eine URL, mit der man ca. 30 Finance-Module abrufen kann. Die Ausgabe der Daten erfolgt im json-Format.
Meine bevorzugte Methode ist, die Daten mit der Excel-Funktion Webdienst abzurufen, da hierbei die Beschränkung auf 32767 Zeichen den Abruf nicht behindert.
Mit VBA lässt sich auch recht einfach eine Funktion basteln.
Hier noch einmal die URL zum nachvollziehen (Beispiel AAPL und dem Modul in dem lastDividendDate zu finden ist):

https://query1.finance.yahoo.com/v10/finance/quoteSummary/AAPL?modules=defaultKeyStatistics

Weitere Module mit mehr Daten sind (in der URL hinter modules= einsetzen):
assetProfile
recommendationTrend
cashflowStatementHistory
indexTrend
defaultKeyStatistics
industryTrend
quoteType
incomeStatementHistory
fundOwnership
summaryDetail
insiderHolders
calendarEvents
upgradeDowngradeHistory
price
balanceSheetHistory
earningsTrend
secFilings
institutionOwnership
majorHoldersBreakdown
balanceSheetHistoryQuarterly
earningsHistory
esgScores
summaryProfile
netSharePurchaseActivity
insiderTransactions
sectorTrend
incomeStatementHistoryQuarterly
cashflowStatementHistoryQuarterly
earnings
pageViews
financialData

Grund für die ungewöhnlich lange Abfrage für das Dividendendatum ist, dass ich für das Herausfiltern der gesuchten Zeichenfolge, die Webdienst-Funktion mehrfach verwenden muss.
Falls sich in deiner Tabelle die Position des Wertpapiersymbols einmal ändern sollte, muss in der Abfrage die Position 4mal geändert werden. In deinem Beispiel steht das Symbol AAPL in Zelle B2 und muss also 4mal auf die neue Zellposition angepasst werden. Glücklicherweise ist die Funktion innerhalb der Spalte kopierbar.
 

Das 4-malige wiederholen von WEBDIESNT lässt sich mit der LET-Funktion umgehen. Dann sieht es so aus und man muss den Bezug auf B2 nur an einer Stelle ändern:

LET(url;WEBDIENST("https://query1.finance.yahoo.com/v10/finance/quoteSummary/"&B2&"?modules=defaultKeyStatistics");TEIL(TEIL(url;FINDEN("lastDividendDate";url);60);FINDEN("fmt";TEIL(url;FINDEN("lastDividendDate";url);60))+6;10))

 

Weißt Du zufällig, warum die Werte aus WEBDIENST nicht zu den auf der Weboberfläche angezeigten passen? Als Beispiel hier das Forward P/E:

image.png.acd6ae6627faf84f0532cf07a9e2dc65.png

image.png.4d4e67f3193d8ec8117622b695d6332e.png

Share this post


Link to post
Der T
Posted · Edited by Der T
vor 3 Stunden von Flughafen:

Hallo Leute,

 

wie kann ich bitte von Tradegate den Last-Kurs in Excel (VBA) einesen? Z.B. https://www.tradegate.de/orderbuch.php?isin=IE00BFY0GT14

 

 

grafik.png.b9f6b9db6fa705a78778df2249e1a43d.png

 

Es gab in diesem Thema bereits diese Frage, aber die Antwort ist bereits gelöscht. :( Ich habe mir auch den VBA Macro-Code in der Datei YahooHistoQuotes v2.02 von @Oli Garch angesehen. Insgesamt ist die Logik verständlich, aber im Detail zu kompliziert, weil es neben dem Einlesen die Makros dort noch viele andere Funktionen gibt. Diese Funktionen lesen die Kurse in einer Schleife für mehrere Tage ein, mit Hilfe einer Form für manuelle Eingabe und speichern die Ergebnisse in einer anderen, externen Datei. In dieser Komplexität blicke ich das reine Einlesen leider nicht genau durch. Meine Excel-VBA-Kenntnisse sind leider nicht ausreichend, um all diese Makros zu verstehen.

 

Ich brauche ein Makro, wenn ich es ausführe, soll es den jetzigen Kurs von der Tradegate-Seite in z.B. die feste Excel-Zelle M2 reinschreiben. Den Kurs für jetzt, nicht für andere Tage. In dem aktuellen Excel-Sheet.

 

Kann mir bitte jemand helfen?

 

Viele Grüße,

Flug

 

 

Probiere mal die Excel-Funktion:

=LET(url;WEBDIENST("https://www.tradegate.de/orderbuch.php?isin=IE00BFY0GT14");Anfang;FINDEN("last";url)+6;Ende;FINDEN("</strong";url;Anfang);TEIL(url;Anfang;Ende-Anfang))

 

Einfach in deine Wunschzelle eintragen.

Share this post


Link to post
Oli Garch
Posted
vor 30 Minuten von Der T:

Weißt Du zufällig, warum die Werte aus WEBDIENST nicht zu den auf der Weboberfläche angezeigten passen? Als Beispiel hier das Forward P/E:

den Unterschied kann ich mir auch nicht erklären. Da muss man wohl mit einer gewissen Streuung rechnen. Ich habe mal zum Vergleich die daten von Finviz herangezogen und in ein Google-Sheet geladen:

image.thumb.png.7dca474534846a0df0880b2a5d5a4506.png

Der Forward P/E-Wert kommt dem von Yahoo-Webdienst doch sehr nahe.

 

Übrigens: Die Excel-Funktion LET kannte ich noch nicht. Sie kann die Formel doch recht schön vereinfachen. Hat bei mir dann doch nicht funktioniert. Geht wohl erst ab Version 2021 oder MS 365. Ich habe hier noch Excel 2019.

 

Um noch mal auf das Problem von @Flughafen zurückzukommen:

Tradegate ist da nicht gerade die beste Idee. In den Nutzungsbedingungen steht da recht deutlich:
Die Nutzung des Internetangebots durch automatisiert bzw. maschinell erzeugte Zugriffe, bspw. mit Hilfe von Programmen oder Skripten, ist nicht gestattet.
In deinem Fall funktioniert aber auch Yahoo recht gut, da Yahoo für deinen ETF auch ein Symbol hat: SPPW.DE. Die Funktion, die du dafür nutzen könntest:

 

Public Function ykurs(Ticker As String) As Double
Dim Kurs As String
Dim QuoteURL As String
Dim XML As Object
On Error GoTo Fehler

QuoteURL = "https://query1.finance.yahoo.com/v7/finance/download/" & Ticker
Set XML = CreateObject("MSXML2.ServerXMLHTTP")
    XML.Open "GET", QuoteURL, False
XML.send
Kurs = XML.responseText
Kurs = Split(Kurs, ",")(11)
Kurs = Replace(Kurs, ".", ",")
ykurs = CDbl(Kurs)
Set XML = Nothing
Exit Function
Fehler:
    ykurs = 0
    Set XML = Nothing
End Function

 

Die Funktion in ein VBA-Modul kopieren und in deine Zelle =yKurs("SPPW.DE") eintragen (Statt Symbol auch Zellbezug möglich). 

Und ohne Makro:

=WERT(WECHSELN(TEIL(WEBDIENST("https://query1.finance.yahoo.com/v7/finance/quote?symbols="&$M1);SUCHEN("regularMarketPrice";WEBDIENST("https://query1.finance.yahoo.com/v7/finance/quote?symbols="&$M1))+20;FINDEN(",";TEIL(WEBDIENST("https://query1.finance.yahoo.com/v7/finance/quote?symbols="&$M1);SUCHEN("regularMarketPrice";WEBDIENST("https://query1.finance.yahoo.com/v7/finance/quote?symbols="&$M1))+20;18))-1);".";",")

 

Diese Formel geht davon aus, dass das Symbol für den gesuchten Kurs in Zelle M1 steht. Die Formel selbst trägst du in die Zelle ein, in der du den Wert haben möchtest. Dein Wunsch war ja M2.
 

 

Share this post


Link to post
Flughafen
Posted

@Oli Garch:

Vielen Dank, das Makro funktioniert mit meinem Excel 2013 perfekt!

Viele Grüße und schöne Feiertage,

Flug

Share this post


Link to post
Bigwigster
Posted

Vielleicht für den einen oder Anderen auch interessant. Ich hatte immer das Problem die aktuellen Kurse von nicht börsengehandelten Fonds in google docs automatisiert reinzubekommen. Mithilfe von ChatGPT habe ich jetzt folgende Lösung:

 

=LEFT(INDEX(IMPORTHTML("https://www.onvista.de/fonds/handelsplaetze/DIMENSIONAL-EMERGING-MARKETS-SUSTAINABILITY-CORE-EQUITY-FUND-EUR-ACC-Fonds-IE00BLCGQT35"; "table"; 1); 2; 3); FIND("EUR"; INDEX(IMPORTHTML("https://www.onvista.de/fonds/handelsplaetze/DIMENSIONAL-EMERGING-MARKETS-SUSTAINABILITY-CORE-EQUITY-FUND-EUR-ACC-Fonds-IE00BLCGQT35"; "table"; 1); 2; 3))-1)

 

Sicher nicht sonderlich elegant, aber es wird die erste Tabelle von der jeweiligen onvista website ausgelesen und nur der interessante Zahlenwert ausgegeben. Selber wäre ich darauf niemals gekommen :thumbsup:

Share this post


Link to post
migieger
Posted · Edited by migieger
Präzisierung

Habe nur ich Probleme Kurse von Avira ins Spreadsheet zu importieren?
Die wollen für den Download historischer Daten (csv) inzwischen einen Account?

Verwendete Formel in Libreoffice Calc (im Feld E4 steht die Ariva "secu"), die die vergangenen Monate einwandfrei tat:
=WERT(TEIL(WEBDIENST("http://www.ariva.de/quote/historic/historic.csv?secu="&$E4&"&boerse_id=12&min_time="&TEXT(DATUM(JAHR(HEUTE());MONAT(HEUTE());TAG((HEUTE()-1)));"[$-407]tt.mm.jjjj")&"&max_time="&TEXT(DATUM(JAHR(HEUTE());MONAT(HEUTE());TAG((HEUTE())));"[$-407]tt.mm.jjjj"));FINDEN("#";WECHSELN(WEBDIENST("http://www.ariva.de/quote/historic/historic.csv?secu="&$E4&"&boerse_id=12&min_time="&TEXT(DATUM(JAHR(HEUTE());MONAT(HEUTE());TAG((HEUTE()-1)));"[$-407]TT.MM.JJJJ")&"&max_time="&TEXT(DATUM(JAHR(HEUTE());MONAT(HEUTE());TAG((HEUTE())));"[$-407]TT.MM.JJJJ"));";";"#";10))+1;FINDEN("#";WECHSELN(WEBDIENST("http://www.ariva.de/quote/historic/historic.csv?secu="&$E4&"&boerse_id=12&min_time="&TEXT(DATUM(JAHR(HEUTE());MONAT(HEUTE());TAG((HEUTE()-1)));"[$-407]tt.mm.jjjj")&"&max_time="&TEXT(DATUM(JAHR(HEUTE());MONAT(HEUTE());TAG((HEUTE())));"[$-407]tt.mm.jjjj"));";";"#";11))-FINDEN("#";WECHSELN(WEBDIENST("http://www.ariva.de/quote/historic/historic.csv?secu="&$E4&"&boerse_id=12&min_time="&TEXT(DATUM(JAHR(HEUTE());MONAT(HEUTE());TAG((HEUTE()-1)));"[$-407]TT.MM.JJJJ")&"&max_time="&TEXT(DATUM(JAHR(HEUTE());MONAT(HEUTE());TAG((HEUTE())));"[$-407]TT.MM.JJJJ"));";";"#";10))-1))

Share this post


Link to post
chirlu
Posted
vor 20 Minuten von migieger:

Die wollen für den Download historischer Daten (csv) inzwischen einen Account?

 

Ja, ist mindestens seit Anfang Februar schon so.

Share this post


Link to post
migieger
Posted

Hm, der Abruf hat definitiv ohne account mit obiger Formel noch am Fr. und Wo.ende (14./15./16.04.) geklappt.
Also hängt's an was anderem... nur was?
 

Share this post


Link to post
chirlu
Posted
vor 1 Stunde von migieger:

Also hängt's an was anderem...

 

Denke ich nicht, sondern Ariva wird den Accountzwang jetzt erst scharfgeschaltet haben.

Share this post


Link to post
migieger
Posted
vor 52 Minuten von chirlu:

 

Denke ich nicht, sondern Ariva wird den Accountzwang jetzt erst scharfgeschaltet haben.

Gut möglich, das wäre dann leider das Ende der Kursabfrage via Avira, weil im Download-Link User/Password nicht abgefragt werden :-(

Nur, um sicher zu gehen: fragt jemand ebenfalls Kurse bei Avira für's Spreadsheet ab? Gibt's da die gleichen Probleme?

Und, gibt es eine andere Möglichkeit an Kurse für's Spreadsheet zu kommen (außer Yahoo Finance, deren Kurse sind leider falsch/ungenau)? Onvista wäre gut, habe aber keine Abfrage-Möglichkeit dafür gefunden...
 

Share this post


Link to post
leoluchs
Posted
vor 33 Minuten von migieger:

Nur, um sicher zu gehen: fragt jemand ebenfalls Kurse bei Avira für's Spreadsheet ab? Gibt's da die gleichen Probleme?

Fürs Spreadsheet werden ETF- und Anleihenkurse abgefragt. Bisher funktioniert das nach diesem Verfahren: 

 

Share this post


Link to post
akista
Posted · Edited by akista

Hallo. Bei mir funktioniert heute https://query1.finance.yahoo.com/v7/finance/quote?symbols= mit den angeschlossenen Symbolen nicht mehr. Nutzt das noch jemand und hat das gleiche Problem?

Edit: Excel 2019

Share this post


Link to post
migieger
Posted · Edited by migieger
vor 15 Stunden von leoluchs:

Fürs Spreadsheet werden ETF- und Anleihenkurse abgefragt. Bisher funktioniert das nach diesem Verfahren: 

 

Danke für die Info, daß das weiterhin ohne Account funktioniert. Den Link kannte ich ("meine" Formel beruht ja zu großen Teilen auf Oli Garchs Hinweisen).
Blöderweise gibt's in Libreoffice Calc die Funktion IMPORTXML nicht...
Muß wohl tiefer graben...

vor 12 Stunden von akista:

Hallo. Bei mir funktioniert heute https://query1.finance.yahoo.com/v7/finance/quote?symbols= mit den angeschlossenen Symbolen nicht mehr. Nutzt das noch jemand und hat das gleiche Problem?

Edit: Excel 2019

Ergibt seit gestern auch bei mir Fehler, mit Libreoffice Calc (keine Daten)...
 

Share this post


Link to post
leoluchs
Posted

Ich verwende ein Google-Spreadsheet. In Libre habe ich es nicht ausprobiert.

Share this post


Link to post
UdonThani
Posted
vor 16 Stunden von akista:

Hallo. Bei mir funktioniert heute https://query1.finance.yahoo.com/v7/finance/quote?symbols= mit den angeschlossenen Symbolen nicht mehr. Nutzt das noch jemand und hat das gleiche Problem?

Edit: Excel 2019

 

Habe das gleiche Problem mit Office 365.... wäre über eine Lösung / Alternative dankbar.

Share this post


Link to post
ChuckysEnkel
Posted
1 hour ago, UdonThani said:

 

Habe das gleiche Problem mit Office 365.... wäre über eine Lösung / Alternative dankbar.

+1, leider...

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...