VBA - Werte aus dem Internet auslesen, einfügen und ersetzen

gidato

Lieutenant
Registriert
Juni 2009
Beiträge
670
Hallo an alle,

ich habe folgendes Anliegen:

Ich habe eine Excel Datei mit US Aktien. Ich möchte automatisiert tracken, wann der EX Dividenden Tag ist.
Aus folgender Seite https://de.finance.yahoo.com/quote/AAPL möchte ich den rot markierten Bereich via Excel in den Zellen C2, C3, C4... haben.

Das "AAPL" in der HTML Adresse soll durch Zelle B2, B3, B3 automatisch ersetzbar sein, sodass die EX Dividenden Tag automatisch dem Symbolnamen entsprechend ausgefüllt werden.

Wie kann ich das per VBA programmieren, wie lauten die Befehle dazu ???



4777.png
 

Anhänge

  • 1651333247359.png
    1651333247359.png
    164,4 KB · Aufrufe: 176
  • TEST EX DATES.xlsx
    9,6 KB · Aufrufe: 163
Also eigentlich helfe ich ja gerne, aber Du möchtest keine Lösung, sondern, dass wer anders für Dich arbeitet. Na, dann ....

Bitte stelle deine eigenen Versuche und Lösungswege hier vor, da kann man dann dran anknüpfen.
 
  • Gefällt mir
Reaktionen: cruse, PHuV, Sebbi und eine weitere Person
Natürlich möchte ich eine Lösung, deshalb frage ich ja wie die Befehle aussehen müssen, da ich mich nicht auskenne.

Habe nicht gesagt oder angefragt, das Ihr mir alles fertig machen müsst.

Mich interessieren natürlich welche Befehle wie umgesetzt werden müssen.

Du musst nicht helfen, wenn du mein Anliegen als "Serviertablett hinstellen" verstehst. Ich frage nach wie es geht, dafür ist der Board da um Unterstützung zu bekommen.

Vielleicht hilft mir ja ein anderer.
 
"tRITON" hat aber Recht. VBA ist eine Programmiersprache (ja, ja, man kann darüber diskutieren, ob das wirklich eine vollwertige Sprache ist ;)), man kann nicht wie mit Excel-Formeln mit Hilfe von 2-3 (verschachtelten) Befehlen zu einem Ergebnis kommen.

Du hast uns kein Grundgerüst von deinem VBA-Code geliefert, an dem man ansetzen könnte. Damit stellt sich die Frage ob du überhaupt VBA kannst? Schon die Frage nach der so simplen Aufgabe wie "Das "AAPL" in der HTML Adresse soll durch Zelle B2, B3, B3 automatisch ersetzbar sein" lässt erahnen, dass du Null VBA-/Programmierkenntnisse hast. Daher ist es auch nicht mit der bloßen Erwähnung von ein "paar" Befehlen getan. Ergo: Du erwartest ein fertige Lösung von uns. Oder du unterschätzt die ganze Aufgabe extrem / hast falsche Vorstellungen.

Vielleicht hilft es dir schon, wenn du nach "vba website scraping" googelst. Aber dann wird dir trotzdem noch so einiges fehlen...

Damit es später nicht heißt, dass ich unkooperativ sei: Ein wichtiger Befehl wäre z.B. CreateObject("MSXML2.XMLHTTP"). Es gibt auch eine Variante mit dem Internet Explorer, aber damit sollte man nicht arbeiten, wenn es nicht unbedingt notwendig ist.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: cruse und tRITON
So hab mal folgendes probiert, klappt aber nicht. Kann mir einer helfen ?

Code:
Public Function TGTkurs(Isin As String) As Double
Dim html As New HTMLDocument
Dim http As Object
Dim Extract As String
Dim Wert As Variant
On Error GoTo Fehler
TGTkurs = 0

Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", " https://de.finance.yahoo.com/quote/" & B2, False
http.send
html.body.innerHTML = http.responseText
Extract = html.getElementsByClassName("Ta(end) Fw(600) Lh(14px)").item(0).innerText
Wert = Extract
Wert = Replace(Wert, " ", "")
TGTkurs = CDbl(Wert)
Set http = Nothing
Set html = Nothing
Exit Function
Fehler:
TGTkurs = 0
Set http = Nothing
Set html = Nothing
End Function
 
Zuletzt bearbeitet:
Für die Zukunft: Bitte die Code-Tags benutzen:
1651456222289.png


Und was funktioniert denn nicht genau? Hast du den Verweis auf "Microsoft HTML Object Library" gesetzt?

Vor deiner URL ist ein Leerzeichen. Das erzeugt jetzt in diesem Fall keinen Fehler, aber man sollte auf solche Kleinigkeiten achten.
Du kannst "B2" nicht einfach so direkt schreiben. Wenn du die Kurzschreibweise benutzen möchtest, dann musst du es in eckigen Klammern setzen: "[B2]".

Der Rest ist "ok" und der Code ist mit den Korrekturen lauffähig. Man kann da bestimmt noch einiges optimieren (z.B. den Replace-Befehl durch den Trim-Befehl ersetzen, wenn du Angst vor Leerzeichen vor oder hinter dem Wert hat), aber das ist erstmal egal.
 
@Darkman.X

Habe deine Korrekturhilfen umgesetzt. Ebenso die Optionen unter Extras-> Verweise aktiviert.
Trotzdem wird der entsprechende Wert nicht ermittelt.

1651482584592.png


1651482631969.png
 
EDIT:
Ich habe meinen alten Text gelöscht, weil der vielleicht zu harsch formuliert war.

Also...
Du musst in der Zelle B2 das Wort "AAPL" (ohne ""-Zeichen) eintragen.
Du musst in einer beliebigen Zelle (aber nicht B2) die Formel "=TGTkurs(A1)" ohne ""-Zeichen eintragen. Statt A1 kannst du auch eine andere Zelle eintragen, weil du den Wert in den Klammern mit deinem aktuellen Code nicht auswertest.

Damit wird es dann funktionieren, ich habe es selber getestet. Ab hier bin ich dann auch raus, weil du scheinbar gar nicht weißt, was du da machst.
 
Zuletzt bearbeitet:
Hier mal ein kurzer Screenshot vom HTML Code der Seite...fällt dir was auf? Ich habe es mal rot markiert.

zeug ausm internet.jpg


Das heißt, der folgende Code wird immer nur das erste gefundene Element zurückgeben. Wie willst du da das richtige Element referenzieren?

Code:
Extract = html.getElementsByClassName("Ta(end) Fw(600) Lh(14px)").item(0).innerText
Wert = Extract
Wert = Replace(Wert, " ", "")

Immer eine feste Nummer in Item( ) könnte funktionieren, ist aber alles andere als sicher. Ich würde ja gern ein bisschen helfen, aber ich habe gerade gar keine Zeit :-(


Edit: Beschäftige dich lieber damit...das wird am Ende leichter und birgt weniger Gefahr, dass Yahoo dich beim Scrapen erwischt :-)

https://www.yahoofinanceapi.com/
 
Zuletzt bearbeitet:
Zurück
Oben