Abfrage v. Aktienkursen via BÖRSENHISTORIE() mit VBA Support
04.03.2025 17:30:27
unbekannter_mensch
ich versuche mithilfe eines VBA Loops historische Aktienkurse in Excel abzufragen, allerdings gelingt es mir nicht, die abgefragten Daten zwischen den einzelnen Loop-Durchläufen zu aktualisieren.
Börsenhistorie:
Dazu benutze ich auf der Folie 'Aktien-Kurs-Abfrage' die Formel '=BÖRSENHISTORIE()' mit Aktienkürzel, Enddatum, Startdatum und einem wöchentlichen Interval.
Das Aktienkürzel kommt per einfachem Zellenverweis von derselben Folie, später im Code "H2", die restlichen Parameter sollen hier nebensächlich sein.
Bis hier hin funktioniert alles, d.h. Fülle und änder ich "H2" manuell, also ohne VBA, so erhalte ich stets alle gewünschten Aktienkurse in allen denkbaren Variationen.
VBA:
Mein Plan war es, die Zelle 'H2' der besagten Folie mit unterschiedlichen Aktienkürzeln nacheinander zu füllen und zwischen den einzelnen Kürzeln die gelieferten Ergebnisse von '=BÖRSENHISTORIE()' auszulesen und weiterzuverarbeiten.
Siehe dazu den kleinen VBA_Code anbei.
Das Befüllen der Zelle "H2" funktioniert mit dem genutzen Loop soweit.
Den Timer habe ich eingebaut um nachvollziehen zu können ob die Zelle mit den Kürzeln gefüllt wird, was der Fall ist.
Leider aktualisiert '=BÖRSENHISTORIE()' seine Werte erst, wenn der Code bzw. die Loops einmal komplett durchlaufen sind, also lediglich für die letzte Aktie.
Für die Aktienkürzel vorher, welche alle korrekt in "H2" angezeigt werden, erhalte ich keine Kurse.
Hier meine Frage:
Was kann ich tun, damit auch während der Code noch läuft bereits Werte für '=BÖRSENHISTORIE()' angezeigt werden, oder ist das grundsätzlich nicht möglich ?
Am liebsten würde ich eigentlich '=BÖRSENHISTORIE()' direkt in VBA laufen lassen ohne überhaupt auf Zellen / Formeln zuzugreifen, aber laut ChatGPT funktioniert das nicht, ich konnte auch nichts dazu im Internet finden, weshalb ich mich auf die obige Hybridlösung von VBA & Zelle/Formel fokussiert habe.
APIs versuche ich ebenfalls zu umschiffen.
Vielen Dank für eure Hilfe.
Sub Shares()
Dim delay_sek_01 As Integer
Dim head_row_01 As Integer
Dim stop_row_01 As Integer
Dim Zeile As Integer
delay_sek_01 = 1
head_row_01 = 5
stop_row_01 = 10
Zeile = 6
Do Until n = (stop_row_01 - head_row_01) ' Liest eine Liste mit untereinander stehenden Aktienkürzeln
Firmenname = Worksheets("Aktienübersicht").Cells(Zeile, 3).Value ' Liest Aktienkürzel nacheinander aus Liste (z.B. AMZN, AMD, ADSK)
Worksheets("Aktien-Kurs-Abfrage").Range("H2").Value = Firmenname ' Wechselt Folie und trägt das aktuelle Kürzel in Zelle H2 ein
n = (n + 1) ' Zähler für Stop-Bedingung
Zeile = (Zeile + 1) ' Zeile für das nächste Kürzel
Startzeit = Timer ' Liefert Startzeit für einen Wait-Timer
Endzeit = Startzeit ' Liefert Endzeit für einen Wait-Timer
Do Until (Endzeit - Startzeit) > delay_sek_01 ' Timer: delay_sek_01 = 1sek
Endzeit = Timer
Loop
Loop
End Sub
Anzeige