Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1644to1648
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

HTML Werte abrufen

HTML Werte abrufen
20.09.2018 09:23:06
Dagi
Hallo,
ich möchte von der Homepage :
https://www.finanzen.net/zertifikate/Auf-ICE-Brent-Crude-Rohoel-Brent-Crude-Oil-Rolling-Future/DB2BRE
folgende Werte abrufen:
Bid: 38,43 EUR
Veränderung 0,44 %
Basiswert ICE Brent Crude Rohöl 79,70 08:03:26 0,45%
Wer kann mir weiterhelfen.
Vielen Dank!

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: HTML Werte abrufen
20.09.2018 09:59:46
Bernd
Hallo Dagi,
da du Office 2010 verwendest, kannst du MS Power Query nutzen. Sofern du PQ noch nicht installiert hast, gebe mal bei Google "Power Query Download" ein.
Dann intallieren und mit PQ kannst du dann Webabfragen individuell gestallten, so auch die, du haben möchtest.
Gruß
Bernd
AW: Musterdatei mit Power Query
20.09.2018 10:14:04
Dagi
Danke für die Musterdatei Bernd.
Gruß
Dagi
AW: Musterdatei mit Power Query
20.09.2018 10:16:38
Dagi
Würde gernen auch versuchen mit VBA abzufragen.
Wie würde es gehen?
Gruß
Dagi
Anzeige
AW: Musterdatei mit Power Query
20.09.2018 10:21:45
Bernd
Hallo Dagi,
warum kompliziert, wenn's auch einfach geht?!
Hier müsste der Quelltext der Webseite direkt ausgelesen werden, dazu sind html-Kentnisse erforderlich.
Dabei kann ich dir nicht helfen.
Gruß
Bernd
AW: HTML Werte abrufen
20.09.2018 11:50:36
Dagi
Vielen Dank an euch alle.
Danke PeterK. Werde deine VBA version verwenden.
Gruß
Dagi
Anzeige
AW: HTML Werte abrufen
20.09.2018 12:54:07
Bernd
Hallo Peter,
Könntest du mir vielleicht auch weiter helfen, ich suche eigentlich nach einer ähnlichen Konstruktion.
1. Webseite ansteuern - https://www.ariva.de/allianz-aktie/historische_kurse
2. unten bei "Kurse als CSV dort 1. Datumsfeld 3 Jahre zurück vom 2. Datumsfeld z.B. Heute minus 3 Jahre bis: Heute (siehe Bild)
Userbild
3. Downloadbutton clicken
4. Datei speichern in C:\Import
Vielen Dank schon mal im Voraus
Sonnige Grüße aus Bremen
Bernd
AW: HTML Werte abrufen
20.09.2018 15:00:16
PeterK
Hallo
Das ist leider nicht so einfach zu automatisieren. Bis einschließlich 3.) kein Problem, aber dann erscheint die öffnen/speichern Dialogbox des IE, welche sich nicht automatisieren läßt.
Anzeige
AW: HTML Werte abrufen
20.09.2018 16:44:59
Zwenn
Hallo zusammen,
das ein Download auf diese Weise nicht automatisierbar sei, war bisher auch immer meine Antwort. Nun habe ich aber neulich eine Diskussion gesehen, in der genau dieses Problem mit Sendkeys gelöst wurde. Ich verwende diese Methode sonst nie und bin deshalb auch gar nicht auf die Idee gekommen.
Im IE 11 geht ja unten nur diese Leiste auf, wenn man was runterladen will. Der Shortcut zum Speichern ist Alt + S. Damit wird direkt ohne Rückfrage in den festgelegten Downloadordner gespeichert. Unter VBA geht es mit dieser Zeile:
Application.SendKeys "%{S}"
Getestet habe ich das bisher noch nie. Für Application muss vermutlich die Variable mit der Instanz des IE eingetragen werden.
Viel Glück damit,
Zwenn
Anzeige
AW: HTML Werte abrufen
20.09.2018 17:36:43
Bernd
Hallo Zwenn,
danke für deinen Vorschlag. Ich werde versuchen ihn anzuwenden.
Gruß
Bernd
AW: HTML Werte abrufen
20.09.2018 17:34:31
Bernd
Hallo Peter,
Danke für deine Antwort. Wäre es möglich mir bis Punkt 3 ein Beispiel zu posten bzw. Codeschnipsel. Ich wäre dir sehr dankbar.
Gruß
Bernd
AW: HTML Werte abrufen
21.09.2018 09:24:43
PeterK
Hallo
Anbei ein funktionierender Code (bis auf das Speichern Problem)

Option Explicit
Sub KurseHolen()
Dim IEexp As Object
Dim myUrl As String
Dim CLNode As Object
Dim myString As String
Dim mySplit() As String
myUrl = "https://www.ariva.de/allianz-aktie/historische_kurse"
'Internet Explorer initialisieren und Sichtbarkeit festlegen
Set IEexp = CreateObject("internetexplorer.application")
IEexp.Visible = True  'wenn FALSE funktioniert SendKeys nicht
'Seite im IE aufrufen und warten bis sie vollständig geladen ist
IEexp.navigate myUrl
Do Until IEexp.readyState = 4
DoEvents
Application.Wait (Now + TimeValue("0:00:01"))
Loop
'Das Feld MaxTime auslesen
myString = IEexp.document.getElementById("maxTime").Value
mySplit = Split(myString, ".")
'Die neue MinTime (-3 Jahre von MaxTime)
mySplit(2) = Year(Date) - 3
myString = mySplit(0) & "." & mySplit(1) & "." & mySplit(2)
'Die neue MinTime setzte
IEexp.document.getElementById("minTime").Value = myString
Set CLNode = IEexp.document.getElementsByClassName("submitButton")(0)
If Not CLNode Is Nothing Then
'Auf den Button klicken
CLNode.Click
Application.Wait (Now + TimeValue("0:00:03"))
'Speichern aufrufen (speichern unter geht leider auch nicht)
Application.SendKeys "%{S}"
Application.Wait (Now + TimeValue("0:00:03"))
'Da der nachfolgende Code nicht mehr funktioniert
GoTo Ende
'Ab hier kommt es zu Problemen.
'Das PopUp lässt sich durch einen SENDKEY nicht schliessen.
'Der IEexp.readystate bleibt auf 3
Do Until IEexp.readyState = 4
DoEvents
Application.Wait (Now + TimeValue("0:00:01"))
Loop
Else
MsgBox "Der Button 'Download' wurde nicht gefunden"
Exit Sub
End If
Ende:
IEexp.Quit
Set IEexp = Nothing
Debug.Print "fertig"
End Sub

Anzeige
So gehts
21.09.2018 11:29:01
Zwenn
Hallo zusammen,
nachdem dieser Thread nun schon für einen anderen Zweck gekapert wurde, habe ich mich jetzt mit Sendkeys beschäftigt. Man muss die Anwendung zuerst aktivieren, dann Sendkeys einsetzen. Hier geht es um einen Download im IE. Besteht bereits eine Datei mit gleichem Namen im Downloadordner, wird eine weitere angelegt und mit dem Zusatz (1) versehen.

Option Explicit
Sub CSVmitSendkeysSpeichern()
Dim browser As Object
Dim url As String
Dim knotenInput As Object
Dim knotenDownload As Object
Dim objShell As Object
Dim win As Object
'URL setzen
url = "https://www.ariva.de/allianz-aktie/historische_kurse"
'Seite im IE öffnen
Set browser = CreateObject("internetexplorer.application")
browser.Visible = True
browser.navigate url
Do Until browser.readyState = 4: DoEvents: Loop
'Grenzen für Daten setzen
browser.Document.getElementById("minTime").Value = "20.09.2015"
browser.Document.getElementById("maxTime").Value = "20.09.2018"
'Download Button klicken
'Alle Input Elemente einsammeln
Set knotenInput = browser.Document.getElementsByClassName("submitButton")
'Alle Input Elemente durchgehen auf das Attribut 'Download'
For Each knotenDownload In knotenInput
'Prüfen auf Attribut value mit dem Wert download
If knotenDownload.getAttribute("value") = "Download" Then
'Wenn Download Button gefunden, anklicken
knotenDownload.Click
'Zeit geben, um die DOwnloadleiste unten einzublenden
'(Muss eventuell angepasst werden, falls zu kurz)
Application.Wait (Now + TimeSerial(0, 0, 2))
Exit For
End If
Next knotenDownload
'CSV in den Standard-Download-Ordner laden
'Das ist der Download-Ordner des Systems
'Um Sendkeys richtig zu nutzen, muss die
'Application, an die gesendet werden soll
'aktiviert werden.
'Das passiert über den Namen in der Titelzeile
'Diesen kann man finden, indem man über die
'Shell alle offenen Fenster durchgeht und
'zunächst nach der Anwendung sucht, also dem
'Internet Explorer und dann schaut, ob die
'richtige URL darin geöffnet ist
Set objShell = CreateObject("Shell.Application")
For Each win In objShell.Windows
If InStr(1, UCase(win.FullName), "IEXPLORE") > 0 Then
If win.Document.Location = url Then
AppActivate win.Document.Title
Application.SendKeys ("%{S}")
End If
End If
Next
'Zeit für den Download geben, bevor der IE geschlossen wird
'(Muss eventuell angepasst werden, falls zu kurz)
Application.Wait (Now + TimeSerial(0, 0, 2))
'Aufräumen
browser.Quit
Set browser = Nothing
Set knotenInput = Nothing
Set knotenDownload = Nothing
End Sub
Viele Grüße,
Zwenn
Anzeige
AW: So gehts
22.09.2018 10:22:31
Bernd
Hallo Zwenn,
entschuldige, dass ich mich erst jetzt melde!!!
Dein Code funktioniert. Ich wollte ihn noch etwas anpassen, z.B. das min- u. maxDatum aus Zelle einlesen zu lassen (Sheets("Hilfe").Range("B3") bzw. ("B4"), sowie den Speicherort zu ändern auf C:\Import. bin aber gescheitert, da mein VBA noch nicht ausreicht, solche Änderungen vorzunehmen. Ebenso möchte ich die Zeile "URL" anpassen und zwar stehen die URL's in Tb "Daten" Spalte 4 ab Zeile 2 bis letzte nach unten. D.h. über eine Schleife sollen alle URL's nacheinder verarbeitet werden.
Bei diesen Anpassungen komme ich leider nicht weiter und wäre dir sehr dankbar, wenn du mir das in deinen Code einbauen könntest oder mir zeigts, wo ich was ändern soll.
Für deine Bemühungen darf ich mich schon mal recht♥lich bedanken :-)
Sonnige Grüße aus Bremen
Bernd
Anzeige
AW: So gehts
22.09.2018 11:02:42
Bernd
Hallo Zwenn,
hab gerade mit verschiedenen URL's nochmal getestet und erhalte folgende Fehlermeldung.
Userbild
In folgender Codezeile.
Userbild
Gruß
Bernd
AW: So gehts
22.09.2018 22:15:38
Zwenn
Hallo Bernd,
wenn der Download für Dich jetzt klappt, ist doch schon eine Menge gewonnen :-)
Das was Du nun noch möchtest, lässt sich vermutlich auch umsetzen. Außer die Änderung des Downloadordners nehme ich an. Die Daten hatte ich mit Absicht so starr einprogrammiert, weil ich nicht wußte, was Du am Ende wirklich brauchst und auch Deine Tabellen nicht kenne. Die Daten aus Tabellenzellen einzulesen ist einfach. Eigentlich hast Du dafür doch auch schon fast alles hingeschrieben, damit es geht.
Auch URLs lassen sich in einer Schleife ziemlich einfach abarbeiten. Insgesamt sind Deine Infos aber etwas spärlich. Du schreibst zwar hin, wo sich die URLs befinden, aber nix über sie selbst. In Deinem letzten Posting präsentierst Du dann eine Fehlermeldung. Viel mehr als: "Dann ist da wohl was schief gegangen." kann ich dazu aber nicht sagen.
Wie gesagt, habe ich bisher noch nie mit Sendkeys gearbeitet, weil es bisher aus meiner Sicht immer bessere Lösungen gab. Dies ist die erste sinnvolle Anwendung, die ich für den Teil sehe, den ich so mit Excel und VBA veranstalte. Deshalb ist es unerlässlich, dass Du mehr von Deinen URLs zur Verfügung stellst, damit man sehen kann, was da los ist. Im besten Fall, warum es zur Fehlermeldung kommt. Denn die markierte Zeile wundert mich schon. Bevor das Makro dort ankommt, müssen ja bereits zwei Bedingungen erfüllt sein.
Am besten wäre es, wenn Du mal eine Beispielmappe hochlädst. An URLs sollten mehrere enthalten sein. Auf jeden Fall auch die, die die Fehlermeldung produziert hat. Wenn es mehr davon gibt, auch gerne die.
Ich halte es allerdings für angebracht, wenn Du für das weitere Vorgehen einen eigenen Thread eröffnest. Hier ging es ja eigentlich um etwas ganz anderes.
Viele Grüße,
Zwenn
Anzeige
AW: So gehts
23.09.2018 16:19:12
Bernd
Hallo Zwenn,
Danke für deine Bereitschaft mir weiter zu helfen!!!
Habe eine neuen Thread eröffnet... https://www.herber.de/forum/messages/1647331.html
Dort habe ich auch die Musterdatei hinterlegt.
Grüße aus Bremen
Bernd
AW: HTML Werte abrufen
22.09.2018 10:08:51
Bernd
Hallo Perter,
entschuldige, dass ich mich erst jetzt melde!!!
Vielen ♥lichen Dank für deine Hilfe, habe mir einige Denkanstösse aus deinem Code mitnehmen können.
Auch Zwenn hat sich Meiner angenommen und einen funktionierenden Code eingestellt,den ich verwenden werde.
Sonnige Grüße aus Bremen
Bernd
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige