AW: VBA IE Popup öffnen und Bild kopieren (2)
31.07.2017 12:43:39
Zwenn
Hi Christian,
zunächst mal der Verweis auf den alten Thread:
https://www.herber.de/cgi-bin/callthread.pl?index=1570771
Hier ist die Lösung, wie man den Bilderlink aus dem JS PopUp bekommt. Das Laden in ein Tabellenblatt und das Löschen bestehender Grafiken fehlt halt noch. Das funktioniert aber alles über das Shape-Objekt.
Sub zum testen der Funktion:
Option Explicit
Sub ChartsHolenVonING_DiBa()
Const chartTabelle As String = "Charts" 'Hier Deinen Tabellennamen eintragen
Dim ing_DiBaURL As String
Dim grafikLink As String
'Testlink
ing_DiBaURL = "https://wertpapiere.ing-diba.de/DE/Showpage.aspx?pageID=25&ISIN=DE0008404005& _
'Grafik-Link aus PopUp holen
grafikLink = GrafikLinkHolen(ing_DiBaURL)
'Test Ausgabe
MsgBox grafikLink
End Sub
Die Funktion, die den Bilderlink liefert:
(Die durch das Forum eingefügten Zeilenumbrüche durch Unterstriche müssen entfernt werden)
Function GrafikLinkHolen(ing_DiBaURL As String) As String
Dim browser As Object
Dim url As String
Dim knotenAst As Object
Dim knoten As Object
Dim grafik As Shape
Set browser = CreateObject("internetexplorer.application")
browser.Visible = False
browser.Navigate ing_DiBaURL
Do Until browser.ReadyState = 4: DoEvents: Loop
'Aufruf einer JS Funktion nach dem Muster:
'Call browser.document.parentWindow.execScript("FUNKTIONSNAME(PARAMETER1, ..., PARAMETERn, ' _
')", "JavaScript")
Call browser.document.parentWindow.execScript("__doPostBack('ctl00$WebPartManager$ _
wp43346709$wp44614289$ChartImagePopupLink$Control$dialogLink_showChartImagePopup', '')", "JavaScript")
'Warten, bis das Popup vollständig angezeigt wird
'(Zeit ggf. anpassen)
Application.Wait (Time + TimeValue("00:00:02"))
'Wenn das Popup da ist, gibt es eine 2. Verwendung der CSS Klasse "popup-style"
'Innerhalb des damit eingeleiteten HTML Abschnitts liegt der Code für das Popup
'Darin wird jetzt das einzig vorkommende img-Tag ausgelesen
Set knotenAst = browser.document.getElementsByClassName("popup-style")(1). _
getElementsByTagName("img")(0)
If Not knotenAst Is Nothing Then
'Aus dem img-Tag wird der Wert des Attributes scr ausgelesen
'Das ist der gesuchte Bilderlink, den diese Funktion an die
'aufrufende Routine zurück gibt
GrafikLinkHolen = knotenAst.src
Else
'Wurde kein img-Tag gefunden
'wird "kein Link" zurückgeliefert
GrafikLinkHolen = "kein Link"
End If
End Function
Ich denke, da kannst Du drauf aufsetzen, wenn Du jetzt weitermachen willst :-)
Viele Grüße,
Zwenn