Montag, 10. Juni 2019

Import von Aktienkursen in Excel 2013 per Google Sheets

Ich habe vor einiger Zeit von der Möglichkeit geschrieben, wie man Aktienkurse in Excel mittels Add-in importieren und automatisch updaten konnte (Link).
Diese Funktion wurde jedoch Ende 2017 abgeschaltet und die Yahoo API zur Abfrage von Aktienkursen wurde deaktiviert.

Da ich jetzt wieder etwas Zeit habe, habe ich mich nach einer Alternative umgeschaut und bin fündig geworden. Die hier beschriebene Methode ist für Excel 2013 gedacht mit einer Anbindung an Google Sheets. Das Excel von Office 365 hat gemäß einigen Quellen (Link, Link) einen eigenen Datentypen "Aktie", die eine Kursabfrage und Abfragen für weitere Informationen erheblich vereinfachen.

Mein Vorgehen basiert auf der Funktion "IMPORTXML" anstatt wie oft zu lesen auf der Funktion "GOOGLEFINANCE". Hintergrund ist, dass die "GOOGLEFINANCE" Funktion eine sehr schlechte Fond-Unterstützung hat und man sich immer die Kürzel aus z.B. http://www.boerse-frankfurt.de besorgen muss. Einige Fonds werden trotz Kürzel nicht unterstützt (z.B. FvS Multiple Opportunities, ISIN LU0323578657, Kürzel S6TB). Mittels der Funktion "IMPORTXML" wird der Kurs von einer Webseite wie www.ariva.de per XML-Grapping abgegriffen. Das funktioniert hier für sehr gut für Fonds und Aktien

Anbindung an Google Sheets

Zunächst zu den Schritten für das Vorgehen mittels Google Sheets Verknüpfung. Im Grundgedanken sollte man wie folgt vorgehen:
  • Erstellen einer Google Sheet Liste mit den gewünschten Aktien und ISIN Daten
  • Nutzen der Funktion "IMPORTXML" direkt in Google Sheet
  • Mittels Datenimport aus Text in Excel können dann per .csv die Aktienkurse importiert werden

Vorgehen in Google Sheets

Wie schon gesagt, erstellt man sich zuerst in Google Sheets (Link) eine Tabelle mit z.B. den folgenden Informationen:
  • Aktienname
  • ISIN
  • Abfrage URL
  • Aktuelle Kurs
Eine solche Datei sieht z.B. wie diese aus (Link): 
Google Sheet Datei
Die Formeln kann man dynamisch machen, so dass z.B. die Formel für die Abfrage URL wie folgt lautet: "="https://www.ariva.de/" & B2". Dadurch erleichtert man sich viel Arbeit.

Wichtig ist die Formel in der letzten Spalte "Aktueller Kurs":

"=IMPORTXML("" & C2 & "";"//span[@itemprop='price'][1]")". 

Die IMPORTXML-Funktion ruft die Webseite aus C2 auf und gibt den gewünschten XPath-Wert zurück. In diesem Fall ist es der aktuelle Kurs. Dieser ist tief in der xml-Struktur im Attribut "itemprop="price" zu finden. Auf anderen Webseiten wie z.B. Finanzen.net kann er woanders liegen, dieses Beispiel ist für Ariva.de.
Um die XPath des Kurses zu finden, kann man z.B. im Firefox Browser auf die Webseite der gewünschten Aktie/Fond gehen, dann drückt man F12 und gelangt in einen Debugger-Modus. Dort sucht man nach dem Kurs und gelangt dann in die Xml-Struktur. Dort kann dann per Rechtsclick => Kopieren => XPath, der XPath kopiert werden. 

Freigeben des Sheets

Sofern man fertig ist, muss man den Sheet noch als .csv freigeben. Dies geschieht innerhalb von Google Sheets per Datei => Im Web veröffentlichen. Im Anschluss wählt man das Tabellenblatt aus und den Typen als .CSV Datei.
Veröffentlichung der Datei
Sollte man es als Webseite veröffentlichen kommt Excel 2013 damit nicht klar und will die Webseite einbinden. Da Excel anscheinend noch intern auf den Internet-Explorer zugreift und Google Sheets diesen nicht optimal unterstützt, ist der CSV-Import auf jeden Fall vorzuziehen!
Man sollte auch die erneute automatische Veröffentlichung bei Änderung aktivieren. Diese Option ist standardmäßig aktiviert und kann sonst unter "Veröffentlichte Inhalte und Einstellungen" aktiviert werden.
Die erscheinende URL sollte man sich merken, diese wird dann für Excel benötigt.

Import der CSV-Datei in Excel

Man sollte sich die URL als Verknüpfung in den Ordner, wo man seine eigene Excel-Datei hat, ablegen. Hintergrund ist der, dass Excel 2013 nach der Konfiguration des Imports bei einem erneuten Import Teile der URL abschneidet. Somit findet er diese nicht mehr. Wenn man eine Verknüpfung zur Webseite (bzw. zum CSV-Export) abgelegt hat, kann man diesen immer direkt auswählen.
Ansonsten geht man in Excel wie folgt vor:
Import in Excel
Jetzt kann man mit den Daten weiter arbeiten. Möchte man die Daten aktualisieren, so drückt man unter "Daten => Alle aktualisieren".
Dann erscheint ein neues Fenster:
Aktualisierung der URL
Hier sieht man auch das Problem, welches ich vorher beschrieben habe. Es werden Teile der URL abgeschnitten. Sollte man eine Verknüpfung erstellt haben, dann ist auch die Verknüpfung abgeschnitten, jedoch erscheint im Fenster wo hier "Es wurden keine Suchergebnisse gefunden." steht die Verknüpfung.

Andere Daten importieren als nur den aktuellen Kurs

Möchte man noch andere Daten der Aktienkurse importieren, so passt man sein Google Sheet entsprechend an. Hier muss die Formel "IMPORTXML" angepasst werden bzw. der XPath, der die gewünschten Daten beinhaltet. So sieht man z.B. den aktuellen Gewinn in € bzw. % in der folgenden Struktur:
Weitere XPath Struktur
Somit muss man die „lastcolwin“ und „colwin“ Daten abfragen. (Es gab 0,355€ Gewinn bzw. 0,75%). Hat man jedoch nur mit Aktien zu tun, so ist die Funktion "GOOGLEFINANCE" einfacher zu handhaben. Oder man nutzt einfach nur Google Sheets.