Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
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

SVG Button mit VBA ansteuern

SVG Button mit VBA ansteuern
10.09.2018 20:59:32
Marc
Hallo Forumsgemeinde,
als VBA Neuling versuche ich mich gerade daran Elemente einer Webseite aus Excel heraus mit VBA anzusprechen. Das klappt bisher eigentlich auch ganz gut, allerdings komme ich bei dem Versuch ein bestimmtes Element auf der folgenden Seite anzusprechen nicht weiter.
Link:
https://de.finance.yahoo.com/quote/DAI.DE/history?ltr=1
Es geht darum mit Hilfe von VBA den Zeitraum für den Bezug historischer Kurse festzulegen. Dies geschieht im sogenannten "Date-Picker-Menu" (Bezeichnung des HTML Elements). Allerdings sind alle Versuche, die ich bislang gemacht habe fehlgeschlagen, wie beispielsweise über IE.document.getElementsbyClassName(0).value = "Wunschdatum" das
jeweile Start-/Enddatum Datum festzulegen.
Um das Textfeld zu öffnen muss man erstmal einen Button klicken, der anscheinend ein SVG-Element darstellt, allerdings bin ich nicht sicher ob man das Menü überhaupt öffnen muss um den Wert für das Start-/Enddatum via VBA festzulegen. Selbst das Klicken dieses Buttons ist mir nicht gelungen. Das ist der HTML Code des Buttons:

Kann mir jemand sagen wie es möglich ist via VBA das Start-/Enddatum einzugeben und einen solchen Button zu betätigen?
Vielen Dank und Gruß,
Marc

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SVG Button mit VBA ansteuern
11.09.2018 11:15:20
PeterK
Hallo
Du kannst Das Datum in der URL festlegen
https://de.finance.yahoo.com/quote/DAI.DE/history?period1=1514761200&period2=1536616800&interval=1d&filter=history&frequency=1d
Es handelt sich um ein UNIX Datum wobei 1514761200 = 01.01.2018 (siehe https://www.unixtimeconverter.io/). Mit +86400 würdest Du den 02.01.2018 ansprechen
AW: SVG Button mit VBA ansteuern
11.09.2018 18:11:20
Marc
Hallo Peter,
es freut mich schonmal sehr zu lesen, dass es diese praktische Lösung gibt.
Vielleicht kannst Du mir auch noch mitteilen wie man den Download der Daten starten kann denn ich schaffe es nicht den Download Button anzusteuern. Braucht man diesen überhaupt zwingend oder gibt es eine andere Lösung?
Ich hatte es mit IE.document.getElementsByName("download")(0).Click erfolglos versucht.
Gruß,
Marc
Anzeige
AW: SVG Button mit VBA ansteuern
12.09.2018 13:00:30
PeterK
Hallo
So bekommst Du den Link

For xx = 0 To IE.document.Links.Length
If InStr(1, IE.document.Links(xx).href, "crumb") > 0 Then
url = IE.document.Links(xx).href
End If
Next xx

AW: SVG Button mit VBA ansteuern
12.09.2018 22:38:34
Marc
Hallo Peter,
ich habe mich nun mit der InStr-Funktion befasst und kämpfe jetzt seit ca 2 Std damit diesen Codeschnipsel erfolgreich zum Laufen zu bringen aber offenbar mache ich irgendetwas falsch in Bezug auf die Objektvariable. Wenn ich den Code so laufen lasse wie Du geschrieben hattest bekomme ich die Meldung es sei eine Objektvariable erforderlich, deshalb habe ich es so wie unten dargestellt versucht.
So sieht mein Code aus:
Dim xx As Long
Dim Url As String
Dim Link As Object
Set Link = IE.document.Links(xx)
For xx = 0 To IE.document.Links.Length
If InStr(1, Link.href, "crumb") > 0 Then
Url = IE.document.Links(xx).href
MsgBox (Url)
End If
Next xx
Ich bekomme zwar keinen Fehler aber die Messagebox bleibt leer.
Gruß,
Marc
Anzeige
AW: SVG Button mit VBA ansteuern
13.09.2018 09:53:43
PeterK
Hallo
Hab leider einen Fehler gemacht. Da Die Schleife von 0 beginnt darf ich nur bis "...Length - 1" gehen.
Vorsicht: Die Seitenbetreiber haben einige Fallstricke eingebaut. Die Seite benötigt ein Cookie den Du beim ersten Aufruf zustimmen mußt (d.h. beim allerersten Aufruf wird Deine MsgBox leer bleiben). Diese CookieId wird dann im Downloadpfad verwendet, d.h. der Downloadpfad ist nur solange gültig solange das Cookie gültig ist.
Wenn Du den Pfad über "Navigate" aufrufst, bekommst Du im Explorer das Öffnen/Speicher Popup.

Sub KurseHolen()
Dim IE As Object
Dim url As String
Dim xx As Long
url = "https://de.finance.yahoo.com/quote/DAI.DE/history?period1=1514761200&period2= _
1536616800&interval=1d&filter=history&frequency=1d"
'Internet Explorer initialisieren und Sichtbarkeit festlegen
Set IE = CreateObject("internetexplorer.application")
IE.Visible = True
'Seite im IE aufrufen und warten bis sie vollständig geladen ist
IE.navigate url
Do Until IE.readyState = 4
DoEvents
Application.Wait (Now + TimeValue("0:00:01"))
Loop
url = ""
For xx = 0 To IE.document.Links.Length - 1
If InStr(1, IE.document.Links(xx).href, "crumb") > 0 Then
url = IE.document.Links(xx).href
End If
Next xx
MsgBox url
'IE.Quit
Set IE = Nothing
End Sub

Anzeige
AW: SVG Button mit VBA ansteuern
16.09.2018 00:02:33
Marc
Hallo Peter,
Deine Tipps sind Gold wert. Es funktioniert nun schonmal soweit, dass ich den Link aufrufen kann. Das Problem mit dem Cookie lässt sich recht unproblematisch in den Griff bekommen wenn man die Schleife einfach nochmal laufen lässt.
Was mir nun allerdings zu schaffen macht ist die Download Dialogbox, denn ich schaffe es nicht mit Sendkeys die Datei zu öffnen, weil das Pop Up vermutlich nicht den Focus hat:
Sub Datenabruf()
Dim Ticker As String
Ticker = ActiveWorkbook.Worksheets("Tabelle1").Range("A1").Value
Dim IE As Object
Set IE = New InternetExplorer
IE.Visible = True
IE.navigate "https://de.finance.yahoo.com/quote/" & Ticker & "/history?period1=1514761200&period2=1536616800&interval=1d&filter=history&frequency=1d"
Do
DoEvents
Loop Until IE.readyState = 4
On Error Resume Next
IE.document.getElementsByClassName("btn btn-primary agree")(0).Click
Dim xx As Long
Dim Url As String
Schleife:
For xx = 0 To IE.document.Links.Length - 1
If InStr(1, IE.document.Links(xx).href, "crumb") > 0 Then
Url = IE.document.Links(xx).href
End If
Next xx
If Url = "" Then GoTo Schleife Else IE.navigate Url
With Application
.SendKeys "{LEFT}", Wait:=True
.SendKeys "{ENTER}", Wait:=True
End With
Daran sind wohl schon einige verzweifelt, wie ich beim Googeln festgestellt habe.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige