Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1900to1904
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

Windows "Hinweis" in IE10 unterbinden

Windows "Hinweis" in IE10 unterbinden
18.10.2022 19:56:36
Jürgen
Hallo liebe Experten,
ich habe ein kleines Makro, dass IE10 öffnet (edge leider nicht möglich), Daten aus einer Seite ausliest und den Explorer wieder schließt. Funktioniert eigentlich super.
Heute bekam ich aber beim Öffnen des IE eine Windows-Hinweismeldung, dass IE10 veraltet sei und ich doch Edge benutzen soll - das hat mir natürlich mein Makro zerschossen.

Set ie = New InternetExplorer
ie.Visible = True
ie.Navigate url
Do While ie.ReadyState 
Weiß jemand, wie man solch einen Windows-Hinweis (im Prinzip ein Pop-up) abfangen kann (und warum es nicht jedes mal aufpoppt)?
Vielen Dank schonmal!

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Windows "Hinweis" in IE10 unterbinden
19.10.2022 10:16:01
captainkeksxx
Ich würde dir empfehlen auf Selenium umzusteigen. Ich hatte das Problem, das eine Webseite mit IE irgendwann nicht mehr abrufbar war._.
Lade dir einfach die aktuelle Version von Selenium runter:
https://github.com/florentbr/SeleniumBasic/releases/tag/v2.0.9.0
Und den aktuellen Edge Driver (kannst auch Chrome nehmen, falls dir das im Allgemeinen lieber ist):
https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
Hier schmeißt du dann den Edgedriver (oder Chromedriver rein)
C:\Users\%username%\AppData\Local\SeleniumBasic
Und in Excel VBA musst du dann nur noch unter "Extras", "Verweise", die "Selenium Type Library" aktivieren
Selenium funktioniert sehr sehr ähnlich und das ist kein Hexenwerk den Code ein wenig anzupassen.
Eine Idee mit dem Windowsfenster wäre aber, wenn du vielleicht den Befehl "Enter" zu drücken einbaust und somit das Fenster bestätigst. (Falls es im Fokus liegt).
Anzeige
AW: Windows "Hinweis" in IE10 unterbinden
19.10.2022 13:21:34
Jürgen
OK, vielen Dank für deine Antwort.
Noch eine Anschlussfrage:
Das Makro soll auf mehreren Arbeitsplatzrechnern laufen. Muss auf jedem Selenium installiert sein?
Viele Grüße
AW: Windows "Hinweis" in IE10 unterbinden
19.10.2022 15:13:09
captainkeksxx
Ja, es muss bei jedem Rechner installiert sein. Ich weiß jetzt leider nicht, ob man so eine Bibliothek auch iwo auf dem Server speichern kann und man an den anderen Arbeitsplätzen lediglich den Pfad zu Selenium in den Verweisen angibt. Dort gibt es ja die Möglichkeit "Durchsuchen" um bestimmte Verweise hinzuzufügen, die evtl nicht automatisch erkannt werden.
AW: Windows "Hinweis" in IE10 unterbinden
19.10.2022 13:33:44
volti
Hallo Jürgen,
falls Msgboxen weggeklickt werden müssen, nutze ich immer einige API-Befehle dazu.
Da der Code bei MsgBoxen ja nicht weiterläuft, setzt man vorher einen Timer mit Ziel einer Callback-Sub. In dieser wird dann periodisch das Auftauchen der Msgbox abgefragt, und wenn das passiert, etwas gemacht. Z.B. das Schließen eben dieser MsgBox mit DestroyWindow, dem Senden einer Button-Click-Message oder eben die Schließen-Message WM_CLOSE.
Danach wird der Timer gelöscht. Funktioniert in der Regel einwandfrei.
Voraussetzung ist die korrekte Ermittlung des Handle zur MsgBox. Hierfür braucht man den Captiontest und/oder die Klasse. Leider taucht bei mir die besagte Windows-Meldung nicht (mehr) auf, so dass ich den Captiontext oder die Klasse nicht ermitteln kann und den Code nicht testen kann. Grundsätziches Vorgehensbeispiel siehe nachfolgenden Code.
PS: Das Senden der Enter-Taste ist m.E. hier nur schlecht oder gar nicht möglich, da dieses immer an die Vordergrundanwendung geht, und das kann m.E. hier nicht sicher gestellt werden. U. Umständen wird an die falsche Anwendung oder zum falschen Zeitpunkt gesendet.
Code:


Private Declare PtrSafe Function PostMessageA Lib "user32" ( _ ByVal hwnd As LongPtr, ByVal wMsg As Long, _ ByVal wParam As LongPtr, ByVal lParam As LongPtr) As Long Private Declare PtrSafe Function FindWindowA Lib "user32" ( _ ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr Private Declare PtrSafe Function SetTimer Lib "user32" ( _ ByVal hwnd As LongPtr, ByVal nIDEvent As LongPtr, _ ByVal uElapse As Long, ByVal lpTimerFunc As LongPtr) As LongPtr Private Declare PtrSafe Function KillTimer Lib "user32" ( _ ByVal hwnd As LongPtr, ByVal nIDEvent As LongPtr) As Long Const WM_CLOSE As Long = &H10 Dim hTimer As LongPtr Sub Test() Set ie = New InternetExplorer ie.Visible = True hTimer = SetTimer(0&, 0&, 100, AddressOf MsgBoxCallback) ie.Navigate Url Do While ie.ReadyState < 3 If q < 100000 Then DoEvents Else Exit Do End If q = q + 1 Loop If hTimer > 0 Then KillTimer 0&, hTimer ' Timer löschen Set html = ie.Document Set element = html.getElementById("ID") Inhalt = element.innerText End Sub Private Sub MsgBoxCallback() hDlg = FindWindowA("#32770", "Msg-Captiontext") If hDlg > 0 Then KillTimer 0&, hTimer: hTimer = 0 ' Timer löschen PostMessageA hDlg, WM_CLOSE, 0, 0 End If End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Windows "Hinweis" in IE10 unterbinden
26.10.2022 14:10:13
Jürgen
Hallo Karl-Heinz,
vielen Dank für deine Antwort, aber sie macht mir als VBA-Neuling doch noch einige Probleme.
Vorallem die Verwendung von AddressOff. Als erstes bekam ich die Meldung "Falsche Verwendung von AddressOff" das habe ich wegbekommen indem ich den Sub MsgBoxCallback in ein eigenes Modul gepackt habe (der Aufruf für den IE erfolgt aus einer Form heraus). jetzt bekomme ich die Meldung Variable nicht definiert.
Könntest du mir da bitte nochmal auf die Sprünge helfen?
Viele Grüße
Jürgen

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige