bookra

Werte von Websites nach Excel exportieren die sich nicht in einer Tabelle befinden?

Hallo miteinander,

ich handele ab und zu Optionsscheine und eine Preis beeinflussende Größe ist die implizite Volatilität.
Diese sich ständig ändernde Größe würde ich gerne von onvista.de exportieren lassen nach Excel.

Das geht mit einer Abfrage natürlich prima nur habe ich das Problem, dass genau dieser Wert
sich nicht in einer abfragbaren Tabelle befindet : (

Weiß jemand wie ich Zahlen und Text von einer Website trotzdem abrufen kann?

Der Link zum Optionsschein wäre:
https://www.onvista.de/derivate/optionsscheine/JP-MORGAN-CALL-DAX-13000- ...

Wäre natürlich sehr dankbar, kann gerne im Gegenzug ein paar Tipps zur Börse oder zum Optionsscheinhandel geben.

VG Boris
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 566288

Url: https://administrator.de/forum/werte-von-websites-nach-excel-exportieren-die-sich-nicht-in-einer-tabelle-befinden-566288.html

Ausgedruckt am: 02.06.2025 um 17:06 Uhr

em-pie
em-pie 21.04.2020 um 22:44:50 Uhr
Goto Top
Moin,

Entweder per Web Scraper oder die „fertige“ HTML z.B. mit wget Downloaden und per regex den Content rausziehen..

Ggf. Hat die Seite ja such eine API (JSON/ REST/ ...) und du kannst das abfragen und verwenden.


Gruß
em-pie
H41mSh1C0R
H41mSh1C0R 21.04.2020 um 23:15:18 Uhr
Goto Top
Aloa,
um welchen Wert geht es denn?
VG
143728
143728 22.04.2020 aktualisiert um 19:14:42 Uhr
Goto Top
um welchen Wert geht es denn?
Steht in den Angaben des TO => Implizite Volatilität

Sub GetImplicitVolatility()
    On Error GoTo errhandler
    Set objIE = CreateObject("InternetExplorer.Application")  
    
    Set regex = CreateObject("vbscript.regexp")  
    regex.IgnoreCase = True
    regex.Pattern = "Implizite Volatilität.*?([\d\,]+) %"  
    
    With objIE
        .Visible = False
        .Navigate "https://www.onvista.de/derivate/optionsscheine/JP-MORGAN-CALL-DAX-13000-0-01-17-12-21-DE000JM4Q0Z5"  
        While .Busy
            DoEvents
        Wend
        pause 1
        Set matches = regex.Execute(.Document.Body.innerText)
        If matches.Count > 0 Then
            MsgBox matches(0).submatches(0)
        Else
            Err.Raise 99, "GetImplicitVolatility", "Wert nicht gefunden."  
        End If
        .Quit
    End With
    Exit Sub
errhandler:
    MsgBox "ERROR: " + Err.Description, vbExclamation  
    objIE.Quit
End Sub


Sub pause(t As Integer)
    Start = Timer
    Do While Timer < Start + t
        DoEvents
    Loop
End Sub
Oder über das XMLHTTP Object
Sub GetImplicitVolatility()
	Set oDom = CreateObject("htmlfile")  
	Set objhttp = CreateObject("Microsoft.XMLHTTP")  
	With objhttp
	    .Open "GET", "https://www.onvista.de/derivate/optionsscheine/JP-MORGAN-CALL-DAX-13000-0-01-17-12-21-DE000JM4Q0Z5", False  
	    .send
	    oDom.write .responseText
	End With
	set node = Nothing
	For Each span In oDom.getElementsByTagName("span")  
		If InStr(1,span.innerText,"Implizite Volatilität",1) > 0 Then  
			Set node = span
			Exit For
		End If
	Next
	If Not node Is Nothing Then
		MsgBox node.nextSibling.innerText
	End If
	oDom.close
End Sub
AlRoDiSa
AlRoDiSa 22.04.2020 um 10:12:05 Uhr
Goto Top
Moin
kann auch mit der Funktion FILTERXML bzw XMLFILTERN (auf deutsch) realisiert werden
XMLFILTERN - Microsoft support DE

hier mit Beispielen
extract words with FILTERXML
Excel Dynamics Arrays FILTERXML

Viel Erfolg
BooKra
BooKra 22.04.2020 um 18:13:15 Uhr
Goto Top
wow danke Euch für Euren Input Wahnsinn! Ich kann leider bei diesen Dingen absolut nicht mitreden.

Cabrinha vielen Dank für die Mühen und das Wissen.Wahnsinn!

Ich habe den oberen Code Abschnitt in Visual Basic eingefügt leider kommt die Meldung Error: Wert nicht gefunden.

Wenn ich den unteren Code Abschnitt einfüge: Kommt die Meldung: Laufzeitfehler '91': Objektvariable oder With-Blockvariable nicht festgelegt.

Vermutlich liegt es nur an einer Kleinigkeit? Hast du eine Idee warum es nicht funktioniert?

VG Bo
BooKra
BooKra 22.04.2020 um 18:14:54 Uhr
Goto Top
Ich benutze google Chrome zum surfen hängt es damit zusammen sollte ich den Internet Explorer als Standard festlegen?
143728
143728 22.04.2020 aktualisiert um 19:16:41 Uhr
Goto Top
Tippfehler, ist oben korrigiert, geht hier problemlos.
IE ActiveX Skripting muss unter W10 in der Registry aktiviert werden (für Skript 1).
BooKra
BooKra 22.04.2020 um 20:31:41 Uhr
Goto Top
Tausendfacher Dank cabrinha läuft
BooKra
BooKra 01.05.2020 um 19:21:49 Uhr
Goto Top
Hallo cabrinha,

du hast mir wirklich sehr geholfen. Vielleicht kannst du mir noch einen letzten Wunsch erfüllen? Wenn ja der Wert den ich benötige wird ja wie gewünscht von der website onvista geholt. Das ist klasse, nur muss ich jetzt alle 30 Min. den Wert aus der MSG Box in Zellen in Excel händisch eintragen. Wenn sich dieser Schritt automatisieren lassen würde wäre das super.

Ich habe ein Makro aufgezeichnet das genau das tut ich schaffe es nur nicht mit meinen Kenntnissen dieses in Dein Makro einzubauen.

Sub Makro1()
Range("D2").Select
Selection.Copy
Range("D7").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Range("D7").Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub

Vielleicht kannst du nochmal helfen? VG Boris
143728
143728 02.05.2020 aktualisiert um 09:52:13 Uhr
Goto Top
Naja das ist ja das kleinste Problem, die MsgBox war ja sowieso nur als Beispiel dort eingesetzt, einfach ersetzen durch
Range("D7").Value = node.nextSibling.innerText  
BooKra
BooKra 02.05.2020 um 19:45:18 Uhr
Goto Top
Danke : )