Aktienkurse in Excel automatisch aktualisieren

Mit diesem Beitrag möchte ich allen ein Hilfsmittel an die Hand geben, die Aktienkurse und Währungen automatisch in einer Exceltabelle aktualisieren möchten.

 

Vorne weg:

Ich bin in der Programmierung mit VBA relativ unbegabt und die Funktion wurde nicht von mir erstellt. Da ich mich nicht mit fremden Federn schmücke, hier der Link zum Aktienboard und dem Beitrag des Users Smoke. Ihm gebührt die Ehre. Ich gebe hier lediglich eine Schritt für Schritt Anleitung und noch einige kleinere Tipps. Das Ganze wird mit einer vorbereiteten Tabelle im Downloadbereich ergänzt. Ich hoffe, es funktioniert und ist allen eine Hilfe.



Schritt 1

 

Als erstes ist eine leere Arbeitsmappe zu öffnen.

 

Anschließend wird mit der Tastenkombination ALT+F11 ein neues Fenster mit der VBA Umgebung geöffnet. Das sollte dann so ausschauen, wie im Screenshot rechts.

Schritt 2

 

Oben in der Menüleiste auf Ansicht gehen und dann den Projekt-Explorer starten. Er ist knapp unterhalb der Mitte des Auswahlmenüs. Im Screenshot ist die Zeile gelb unterlegt (wo sich auch der Mauszeiger befindet). Dadurch wird der Projekt-Explorer aktiviert, man sieht aber noch nichts.

Schritt 3


Jetzt kann in der Menüleiste oben das Auswahlmenü Einfügen geöffnet werden und hier der Menüpunkt Modul (dritter von oben) ausgewählt werden.

Schritt 4


Nun sollte ein Modulfenster offen sein und links im Verzeichnisbaum steht neu der Ordner Module und darunter Modul 1.

Schritt 5

 

Nun wird der untenstehende Code einfach in das Modulfenster eingefügt. Den Text markieren und mit Strg+C in die Zwischenablage kopieren und dann das Modulfenster anklicken und mit Strg+V einfügen.

 

Das war es schon. Das komplette Fenster kann nun geschlossen werden und die Arbeitsmappe unter dem gewünschten Namen abgespeichert werden. Hierbei ist darauf zu achten, dass man die Dateiform mit Makros einstellt, aber da fragt einen Excel. Die Funktion steht nun wie jede andere Funktion zur Verfügung.

 

 

 

Option Explicit
Public Function KURS_AB(Symbol As String) As Double

On Error GoTo Fehler
Dim Kurs As String
Dim xml
    Set xml = CreateObject("MSXML2.ServerXMLHTTP")
        xml.Open "GET", "http://download.finance.yahoo.com/d/quotes.csv?s=" _
                        & Symbol & "&f=l1&e=.csv", False
        xml.send ""
        Kurs = RTrim(xml.responseText)
        Kurs = Replace(Kurs, Chr$(10), "")
        Kurs = Replace(Kurs, Chr$(13), "")
            Select Case Right(Symbol, 2)
                Case ".L"
                    Kurs = Replace(Kurs, ".", ",") / 100
                Case Else
                    Kurs = Replace(Kurs, ".", ",")
            End Select
       
        KURS_AB = Kurs
 
    Set xml = Nothing
    Exit Function
   
Fehler:
    KURS_AB = 0
    Set xml = Nothing
    Exit Function
End Function

Erster Test

 

Wenn alles geklappt hat, kann der erste Test erfolgen. Gibt man in einer beliebigen Zelle nun =kurs_ab("Kürzel") ein, so sollte der Kurs automatisch geholt werden. Kürzel ist hierbei die Wertpapierkennung. Möchte ich den Kurs von Coca-Cola haben, muss folglich =kurs_ab("KO") eingegeben werden. Es ist darauf zu achten, die Anführungszeichen nicht zu vergessen. Wie das aussieht, ist im Screenshot ersichtlich.


Der Kurs wird nur einmal geholt und bleibt so in der Tabelle stehen. Man kann die Kurse aktualisieren, indem man die Tasten-Kombination Strg+Umsch+Alt+F9 drückt.


Erstens bin ich aber dazu zu faul und zweitens verbiege ich mir da regelmäßig die Finger. Deshalb wäre es schön, wenn sich die Kurse automatisch beim Öffnen der Arbeitsmappe aktualisieren würden. Das folgt in Schritt 6.



Schritt 6

 

Hierzu muss wieder die VBA-Umgebung geöffnet werden. Am einfachsten mit ALT+F11 oder über die Entwicklertools  und Visual Basic auswählen. Es sollte im großen Fenster noch das Modul mit dem VBA-Text stehen, das einfach schließen.

 

 

 

 

Um den Autostart einzurichten, muss man im oberen linken Fenster mit der rechten Maustaste auf Diese Arbeitsmappe klicken, dann öffnet sich ein Auswahlmenü, wie im Screenshot ersichtlich. Hier dann den obersten Menüpunkt Code anzeigen auswählen, dann öffnet sich ein leeres Codefenster wie in Abbildung bei Schritt 7 ersichtlich.

 

 

Schritt 7

 

Nun folgenden Text einfach in das leere Fenster reinkopieren. Es ist die selbe Vorgehensweise wie bei der Funktionserstellung. Danach speichern nicht vergessen.

 

 

Private Sub Workbook_Open()
    Application.CalculateFullRebuild

End Sub

 

Das war es schon. Nun werden die Kurse automatisch beim Öffnen aktualisiert.

 

Wer möchte, kann sich noch eine Schaltfläche einbauen, die die Prozedur aufruft, um während der Arbeit seine Kurse zu aktualisieren. Dies kann ein Button oder ein Symbol in der Schnellzugriffsleiste sein. Ganz wie es beliebt. Dazu muss man lediglich ein Makro definieren.

 

Noch ein Hinweis:

Die Prozedur steht nur in dieser Arbeitsmappe zur Verfügung und nicht global. Das geht etwas anders, soll hier aber nicht vertieft werden. Mit den Kursen kann man genauso wie mit allen anderen Zahlen arbeiten. Zum Beispiel den Kurs von $ in € umrechnen.

 

 

Wer es bis hierher geschafft hat. Gratulation. Für alle, die zu faul sind, habe ich eine Tabelle erstellt, in der die Prozedur, die automatische Aktualisierung und eine Schaltfläche zum manuellen Aktualisieren, eingearbeitet ist. Da kann beliebig gebastelt werden. Die sende ich gerne per E-Mail zu. Dazu könnt ihr das Kontaktformular verwenden.

 

 

Kommentar schreiben

Kommentare: 25
  • #1

    Michael C. Kissig (Freitag, 31 Juli 2015 18:48)

    Danke für die Anleitung!
    Allerdings funktioniert das nur mit amerikanischen Werten, da die Daten ja von finance.yahoo.com geholt werden und sich an den amerikanischen Börsenkürzeln orientieren, oder?

  • #2

    Alexander (Freitag, 31 Juli 2015 19:00)

    Es funktioniert mit allen Werten, die man bei Yahoo abfragen kann. USA, Deutschland, Schweiz usw.
    Man muss nur das Börsenkürzel wissen. Bei BAT zum Beispiel BAT.DE für Deutschland oder BATS.L bei London. Am einfachsten ist es, bei yahoo die Aktie suchen, dann steht oben das Kürzel mit der Börse neben dem Namen in Klammern.

    @all
    Das mit dem upload funktioniert nicht richtig, ich hoffe ich finde bald eine Lösung. Mein Provider scheint keine Dateien mit Makros und VBA zu mögen. Wer die Datei will, den maile ich sie gerne. DAS sollte hoffentlich funktionieren.

  • #3

    Christian (Freitag, 31 Juli 2015 21:18)

    @Michael: Das ist ja gerade der Vorteil bei Yahoo, dass es für jede beliebige Börse und jedes Unternehmen einen eigenen Kürzel gibt. Bei Yahoo finance, also der englischen Seite, im ganz linken Fenster den Unternehmensnamen oder auch die ISIN eingeben, dann tauch da in der Regel eine Reihe von Ergebnissen auf samt Handelsplatz. Manchmal muss man ein bisschen suchen, aber bisher habe ich alle Aktien, auch die ganz kleinen deutschen gefunden.

  • #4

    TS (Samstag, 01 August 2015 11:09)

    Vielen Dank für die Erstellung dieser Anleitung!!

    Habe das eben in eine bereits existierende Liste eingebaut und mir sind noch zwei Punkte eingefallen:

    1. Am Ende von Punkt 6 muss man man Rechtsklick noch auf "Code" anzeigen klicken. Nur Rechtsklick auf Diese Arbeitsmappe ist zu wenig ...

    2. Man muss die Excel-Liste in Anschluss als XLSM Datei (Excel Liste mit Makros) abspeichern. Eine XLSX Datei wie üblich speichert die Makros nicht mit.

  • #5

    Alexander (Samstag, 01 August 2015 12:34)

    Das bei Punkt 6 habe ich vergessen. Wird ergänzt.

    Excel fragt beim Abspeichern, ob mit oder ohne Makros. Ich denke das sollten die meisten hinkriegen.

  • #6

    GDL (Samstag, 01 August 2015 17:20)

    Nochmals vielen Dank an dieser Stelle. Bis jetzt funktioniert alles einwandfrei.

  • #7

    Alex von Reich-mit-Plan.de (Sonntag, 02 August 2015 14:25)

    Früher habe ich auch lange Excel verwendet. Mittlerweile mache ich alles über Google Spreadsheets. Da geht das alles ohne große Programmierung. Einfach wie gewohnt eine Formel setzen und ist. Probier es mal aus, das funktioniert um Welten besser.
    Zudem werden die Zahlen in Realtime aktivalisiert und nicht nur beim öffnen oder "aktivieren".
    Gruß
    Alex

  • #8

    Alexander (Sonntag, 02 August 2015 17:37)

    Auch eine Möglichkeit. Aber manche Sachen will ich einfach Google nicht zur Verfügung stellen. Da bin ich vielleicht komisch. Aber Danke für den Hinweis.

  • #9

    Malte (Mittwoch, 02 September 2015 10:40)

    Hallo Alexander,

    vielen Dank, das ist wirklich ein hilfreiches Tool!! Kannst du noch verraten, welches Symbol man für die Währungskurse verwendet? Beispielsweise €/$ ? Das habe ich nicht gefunden...
    Grüße Malte

  • #10

    Alexander (Mittwoch, 02 September 2015 18:15)

    Hallo Malte,

    den €/$ Kurs bekommst du mit eurusd=x , die Schreibweise ist kurs_ab=("eurusd=x")
    also Anführungszeichen nicht vergessen. Beim Pfund wäre es zB "eurgbp=x".
    Wenn du bei yahoo financial auf Währungen gehst, wird das Kürzel rechts am Bildschirm im Chart eingeblendet.

    Eventuell muss man das Kürzel groß schreiben, das habe ich nicht getestet.

    Viele Grüße

  • #11

    Sam (Samstag, 09 April 2016 10:45)

    Hervorragend. Vielen lieben Dank für diesen Code.
    ich sehe das nicht als selbstverständlich an!

  • #12

    Alexander (Samstag, 09 April 2016 16:42)

    Hallo Sam,
    gerne doch :)

    Bei Bedarf eine kurze Mail und ich schick dir eine Excel-Tabelle, wo alles eingearbeitet ist.

    Ich arbeite jetzt seit 9 Monaten mit der VBA und es funktioniert bisher sehr gut, dauert nur manchmal etwas, bis alle Kurse abgeholt sind. Aber damit kann ich leben.

  • #13

    Tom (Mittwoch, 18 Mai 2016 14:37)

    Hallo Alexander
    Ich habe das gerade probiert. Leider funktioniert das bei mir nicht. Ich bekomme als Wert bei verschiedenen Symbolen immer 0 (null) zurück. Sieht so aus, als ob auch der Wert KO nicht gefunden wird. Lasse ich die Anführungszeichen "Symbol" weg erscheint #WERT. Von dem her schliesse ich daraus, dass was mit der Abfrage nicht stimmt. Hast du einen Tip?
    Danke schön!
    Tom

  • #14

    Alexander (Mittwoch, 18 Mai 2016 19:04)

    Hallo Tom,
    das Problem kann bei Yahoo liegen, da am Wochenende oder an Feiertagen die Kurslieferung nicht immer zu 100 % klappt. Kommt sehr selten vor, aber hatte ich schon zweimal.

    Gruß
    Alexander

  • #15

    Jürgen B (Sonntag, 17 Juli 2016 20:02)

    Hallo, besten Dank für die Codezeilen. Ich kann nun sogar ausser meinen US- und DAX Aktien auch meine einzelnen ETF aus meinem Sparplan einlesen und auswerten. Dazu war der Hinweis den Euro Dollar Kurs betreffend äusserst hilfreich.
    Gruß Jürgen

  • #16

    Alexander (Montag, 25 Juli 2016 16:04)

    Hallo Jürgen,
    freut mich, wenn alles klappt :)

    Viele Grüße

  • #17

    Robert Weis (Donnerstag, 29 Dezember 2016 19:56)

    Kann man auf diese Art auch irgendwie die Aktienkurse zu einem bestimmten Datum abrufen und wenn ja wie?

  • #18

    Alexander (Freitag, 30 Dezember 2016 17:10)

    Hallo Robert,

    mit dieser Funktion holt man sich den letzten verfügbaren Kurs (meist der Schlusskurs vom Vortag). Ob es die Möglichkeit gibt, sich Kurse von einem bestimmten Datum automatisch zu holen, weiß ich leider nicht.

  • #19

    Ulrich (Donnerstag, 19 Januar 2017 13:32)

    Habe das Excelblatt soeben mit all meinen Kursen erstellt und mit Makros als .xlsm-Datei abgespeichert. Will ich nun alle Kurse durch erneutes Öffnen der Tabelle aktualisieren, erscheint in den Zellen in denen z.B. =kurs_ab("SIE") hinterlegt ist der Text #Name? Aber kein aktualisierter Kurswert. Hast du einen Tipp für mich, wie ich das hinbekomme?
    viele Grüße
    Ulrich

  • #20

    Alexander (Donnerstag, 19 Januar 2017 19:55)

    Leider nein, ich schicke die Datei gerne per Mail.

  • #21

    ostone (Samstag, 15 Juli 2017 22:06)

    Mensch Alexander, die Anleitung ist echt der Hit und rettet meine Excel-Aktien-Übersicht. Ich hatte bisher die Kurse über die Microsoft eigene Funktion "MSN MoneyCentral Investor Aktienkurse" abgerufen. Aber seit einigen Tagen unterstützt MSN die Funktion nicht mehr.
    Gut, dass es deinen Blog gibt.
    Grüße, Oli

  • #22

    Alexander (Sonntag, 16 Juli 2017 16:10)

    Hallo Oli,

    MSN hat bei mir oft falsche Werte geliefert. Wenn es nicht funktioniert, dann schicke ich dir das Makro in einer leeren Excel-Datei als Mail.

    Viele Grüße

  • #23

    Jonas (Mittwoch, 19 Juli 2017 16:16)

    Hallo Alex,
    ich bin auch aufgrund der Abschaltung der MSN MoneyCentral über deinen Blog gestolpert. Aber irgendwie bekomme ich bei mir die Abfrage nicht ans Laufen. Ich habe Excel 2013, und eine Tabelle, in der in Spalte A die Yahoo-Kürzel der Aktien/ETFs stehen.
    In Spalte B habe ich dann die Formel =KURS_AB(A1) stehen. Das Ergebnis ist dabei 0...
    Auch wenn ich das Kürzel manuell in die Formal einsetze, bekomme ich Wert 0 ausgegeben (Bsp.: =KURS_AB("X010,DE").
    Wenn ich den Link manuell generiere und in einem Browser eingebe, erhalte ich eine gültige quotes.csv Datei... ich bin echt ratlos, was da schief läuft :(

    Hast du da zufällig eine Idee? :)

    Gruß
    Jonas

  • #24

    Jonas (Mittwoch, 19 Juli 2017 19:31)

    Auf einem anderen Rechner mit Excel 2016 funktioniert es jetzt ohne Probleme... Keine Ahnung was da bei Excel 2013 schief läuft :/

  • #25

    Alexander (Mittwoch, 19 Juli 2017 20:11)

    Hallo Jonas,
    an der Excel-Version selber dürfte es nicht liegen. Vermutlich ist bei deinem Rechner irgendeine Einstellung, die verhindert, dass die VB-Funktion ausgeführt wird. Wenn du magst, schicke mit eine kurze Mail über das Kontaktformular, dann hänge ich dir die Musterdatei an.

    Viele Grüße
    Alexander