Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1844to1848
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

VBA HTML Dropdown export report

VBA HTML Dropdown export report
29.08.2021 18:40:59
Dennis
Hallo zusammen,
ich verzweifel langsam.
Ich habe eine Webansicht für einen Report.
Diesen würde ich gerne automatisieren, sodass der Export zu Excel automatisch von statten geht, da dieser sehr lang braucht und ich in der zwischenzeit etwas anderes machen kann.
Wie folgt mein Makro bis jetzt:
Public Sub MES() Dim IEApp As Object Dim IEDocument As Object Set IEApp = CreateObject("InternetExplorer.Application") IEApp.Visible = True IEApp.Navigate "http://sin-ods01/ReportServer/Pages/ReportViewer.aspx?/MEGReporting/Reports/OEE/MES_STOERBERICHT&rc:Toolbar=TRUE&rs:ParameterLanguage=de-DE&rs:Command=Render&A_szFactory=REIhGLxbmZXoVz8mNMDCBfyn&A_nAllowNewTab=1" Do: Loop Until IEApp.Busy = False Set IEDocument = IEApp.Document Do: Loop Until IEDocument.ReadyState = "complete" IEDocument.getElementById("ReportViewerControl_ctl04_ctl03_txtValue").Value = "01.01.2021" IEDocument.getElementById("ReportViewerControl_ctl04_ctl00").Click Application.Wait Now + TimeSerial(0, 0, 5) 'wartet 2 Sekunden IEDocument.getElementById("ReportViewerControl_ctl05_ctl04_ctl00_Button").Click 'Workbooks.Open ("H:\Desktop\MES Störungen\Blanko MES Störungen.xlsm") End Sub >
Hier müsste ich jetzt aus einer kleinen Dropdown-Liste "Excel" raus suchen und diesen punkt klicken.
HTML-Code bekomme ich hier leider nicht rein, liegt im Anhang -> https://www.herber.de/bbs/user/147825.txt
Hat jemand schon mal so etwas gemacht? Oder gibt es eine andere Lösung? Suche mir seit tagen die Finger wund -.-

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA HTML Dropdown export report
30.08.2021 12:21:30
Zwenn
Hallo Dennis,
Deine Frage kann so nicht eindeutig beantwortet werden, weil es sich nicht um ein Standard-HTML-Dropdown handelt. Es ist ein selbst programmiertes aus Div-Tags, A-Tags, JavaScript und HTML-Events. Allein bei den Events ist unklar, welche verwendet werden, weil die im HTML-Code so nicht drin stehen.
Hier ist ein Beispiel, wie es rein prinzipiell funktioniert. Der Code-Ausschnitt bezieht sich lediglich auf die Problematik mit dem Dropdown. Das ist also die Richtung, in die Du denken musst sozusagen. Ich sage aber auch gleich dazu, das ist eigentlich nix für Deinen angegebenen VBA-Lvl, weil Du vor allem etwas über HTML wissen musst, um solche Dinge lösen zu können.

'Verwendete Variablen
Dim IEDocument As Object
Dim nodeDropdown As Object
Dim nodeAllDropdownEntries As Object
Dim nodeOneDropdownEntry As Object
'HTML-Dokument Objekt durch late binding bereitstellen
'(Kein Verweis in Excel notwendig)
Set IEDocument = CreateObject("htmlFile")
'HTML auf Dropdown beschränken
Set nodeDropdown = IEDocument.getElementById("ReportViewerControl_ctl05_ctl04_ctl00_Menu")
'NodeCollection aus allen Einträgen des Dropdown bilden
Set nodeAllDropdownEntries = nodeDropdown.getElementsByClassName("NormalButton")
'NodeCollection durchgehen, bis der Excel-Eintrag gefunden wurde
For Each nodeOneDropdownEntry In nodeAllDropdownEntries
If InStr(1, nodeOneDropdownEntry.innerText, "Excel") Then
'Wenn Excel gefunden, Element Click-Event auslösen
nodeOneDropdownEntry.Click
'und Schleife verlassen
Exit For
End If
Next nodeOneDropdownEntry
Das wird so nicht auf Anhieb funktionieren und das kann verschiedene Gründe haben. Als erstes solltest Du nachsehen, welche Events für die angesprochenen Elemente verwendet werden. Vor allem für den Excel-Eintrag im Dropdown. Wenn da neben dem Click noch ein MouseOver dranhängt, kann es sein, dass das vor dem Click ausgelöst werden muss. Das funktioniert aber nur mit zusätzlichem Aufwand. Man kann es nicht einfach hinten in einer Zeile schreiben, wie das Click-Event.
Weiterhin musst Du gucken, ob das gesamte HTML bereits vorhanden ist oder ob das Dropdown erst als HTML-Code generiert wird, wenn Du es ausklappst. Dann muss dieser Schritt vor dem Erstellen der NodeCollection erfolgen.
Es gibt sicher noch andere Dinge, die evtl. berücksichtigt werden müssen. Hier ist ein Link, unter dem Du nachsehen kannst, wie Du die HTML-Events nachgucken kannst (die beiden Screenshots unten in der Antwort):
https://stackoverflow.com/questions/63294113/automate-ie-via-excel-to-fill-in-a-dropdown-and-continue/63299608#63299608
Es handelt sich vermutlich um eine interne Seite. Trotzdem musst Du sicher stellen, dass sie noch im InternetExplorer läuft. Der wird seit 2015 nicht mehr gepflegt und gerade aktiv ausgemustert. Ab Juni 2022 wird er nicht mehr zusammen mit Windows ausgeliefert. Du solltest also nach einer anderen Lösung suchen. Da Du auf JavaScript angewiesen bist, wird es auf SeleniumBasic rauslaufen, um Chrome statt den IE zu verwenden. Das solltest Du schonmal im Hinterkopf behalten.
Viele Grüße,
Zwenn
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige