Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA IE Popup öffnen und Bild kopieren (2)

VBA IE Popup öffnen und Bild kopieren (2)
31.07.2017 12:30:10
Christian
Weiterführung des ursprünglichen Threads. Kurz nochmal die Zusammenfassung:
https://www.herber.de/bbs/user/115145.xlsm
Ich möchte die anhand der Aktiennamen die entsprechende Seite z.B.
https://wertpapiere.ing-diba.de/DE/Showpage.aspx?pageID=25&ISIN=DE0008404005&
öffnen und dort unter dem Bereich "Technische Analyse" den Graph aus dem Popup in meine Excel Tabelle kopieren. Dieses kopieren ist die Hürde, da es sich um javascript handelt. Vielen Dank für jegliche Hilfe!

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
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
Anzeige
AW: VBA IE Popup öffnen und Bild kopieren (2)
31.07.2017 15:12:07
Christian
Das ist mal ein deftiger Anfang. Meine Kenntnisse sind aber noch sehr bescheiden, daher würde ich mich freuen, wenn du noch weiter daran arbeiten könntest. Vielen Dank aber schonmal für deine Mühe.
Lösung: VBA IE Popup öffnen und Bild kopieren (2)
03.08.2017 19:38:44
Zwenn
Hallo Christian,
nun hatte ich Zeit mich noch einmal ranzusetzen. Ich habe Dir 2 Dateien hochgeladen.
Die erste enthält die Lösung, wie man Charts von der ING DiBa Seite holt. Ich habe drei Unternehmen in der Testtabelle verlinkt. In Spalte B werden die aktuellen Charts eingebettet, wenn Du auf den Button "Test: Charts holen" oben rechts klickst.
Es ist so programmiert, dass es egal ist, ob bereits eine Grafik in der Zelle ist oder nicht. Ist eine drin, wird sie vorher gelöscht. Ausserdem wird die neue Grafik automatisch um einen angegebenen Faktor skaliert. Ich habe mich für 0,75 (also 75%) entschieden. Der Grund ist Datei 2, die ich Dir hochgeladen habe.
Dabei handelt es sich um einen Vorschlag zum Layout Deines Newsletters. Ich habe einige Informationen ergänzt, die in Deiner Vorgabe fehlen. Wenn man es so macht, können genau 2 Unternehmen auf einer DIN A4 Seite Quer dargestellt werden. Dafür müssen die geholten Charts auf 75% skaliert werden.
Ich habe nur Daten von 2 Instituten in die erste Unternehmenstabelle eingetragen, um zu veranschaulichen, wie es aussehen könnte. In meinem Beispiel ist dann auch nur Platz für 11 Institutsempfehlungen pro Unternehmen. Die anderen beiden Unternehmenstabellen darunter sind leer. Die fehlenden Informationen können aber komplett von den Seiten geholt werden, von denen Du eine verlinkt hattest.
Um etwas Spiel in der Breite zu haben, ist die Spalte F leer. Das sind noch etwas über 2 cm, falls z.B. ein Unternehmensname breiter ist, als in meinem Beispiel. Dann muss die Spalte A entsprechend verbreitert und Spalte F um den gleichen Betrag verschmalert werden.
Die Datei enthält 2 Tabellen. In der ersten sind die Links und Unternehmensnahmen hinterlegt, aus denen die zweite Tabelle dann aufgebaut werden könnte. Das bedeutet, der Newsletter, wie Du ihn genannt hast, wird bei jedem Anklicken des Buttons auf der ersten Tabelle komplett neu erstellt. Damit würde das Charts entfernen und Daten austauschen entfallen.
Beispielmappe mit Makro zum holen der Charts:
https://www.herber.de/bbs/user/115205.xlsm
Beispielmappe als mögliche Designvorlage:
https://www.herber.de/bbs/user/115206.xlsx
Ich denke damit solltest Du klarkommen.
Viele Grüße,
Zwenn
Anzeige
AW: Lösung: VBA IE Popup öffnen und Bild kopieren (2)
04.08.2017 19:52:30
Christian
Vielen Dank, ich werde es mir morgen mal in Ruhe ansehen. Auf den ersten Blick sieht das aber schonmal super aus. Denke damit werde ich weiterarbeiten können und meinen Newsletter etwas aufpeppen. :)
Vielen Dank nochmal für deine Mühe!!

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige