Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Browser-fenster schließen

Forumthread: Browser-fenster schließen

Browser-fenster schließen
01.07.2008 20:19:00
Heiko
Hallo
Hallo zusammen,
habe eine kleines Problem.
Ich möchete eine Internet-Seite mittels einer excel-Liste laden, eine screenshot erzeugen,
nächste I-seite usw.
Funktioniert prima.
Aber ich habe halt dann 50 oder mehr Fenster offen, weil jede Url in einem neuen fenster geöffnet wird.
Wie kann ich das Explorer fenster mit vba wieder schließen ?
Oder besser wie kann ich die nächste UrL im gleichen fenster laden?
Dank im schon mal
heiko

Sub LoadUrl()
Dim URL As String
Dim res, lZ
Sheets("Download-Liste").Select
lZ = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
res = ShellExecute(0&, "close", URL, vbNullString, vbNullString, vbNormalFocus)
For i = 2 To lZ
URL = Cells(i, 3)
res = ShellExecute(0&, "open", URL, vbNullString, vbNullString, vbNormalFocus)
Sleep 5000 '10 sekunden pause um ein anderes Fenster zu aktivieren
Call prcSave_Picture_Screen
Next i
End Sub

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Browser-fenster schließen
01.07.2008 21:38:51
Nepumuk
Hallo Heiko,
kleines Beispiel:
Option Explicit

Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long
Private Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" ( _
    ByVal hWnd As Long, _
    ByVal wMsg As Long, _
    ByVal wParam As Long, _
    ByRef lParam As Any) As Long

Private Const WM_CLOSE = &H10
Private Const GCCLASSNAMEMSIEXPLORER = "IEFrame"

Public Sub Beispiel1()
    Dim hWnd As Long
    hWnd = FindWindow(GCCLASSNAMEMSIEXPLORER, vbNullString)
    PostMessage hWnd, WM_CLOSE, 0&, 0&
End Sub

Gruß
Nepumuk

Anzeige
AW: Browser-fenster schließen
01.07.2008 21:58:05
Heiko
Hallo Nepumuk,
vielen dank für die Lösung
aber leider funktioniert es nur bei Internetexplorer.
Hast du auch eine Lösung für Mozilla Firefox?
besser währe noch wenn die seite im gleichen fenster aktuellisiert würde.
aber möchte nicht zu viel verlangen. Die Lösung bring mich auch schon weiter.
Das Makro (prcSave_Picture_Screen), stammt glaube ich auch von dir (beim googlen gefunden)
Danke für die mühe
heiko

Anzeige
AW: Browser-fenster schließen
01.07.2008 22:10:30
Nepumuk
Hallo Heiko,
dazu musst du den Klassennamen der Browserfensters ermitteln und austauschen. Den Namen kannst du mit folgender Prozedur ermitteln:
Option Explicit

Private Declare Function EnumWindows Lib "user32.dll" ( _
    ByVal lpEnumFunc As Long, _
    ByVal lParam As Long) As Boolean
Private Declare Function GetWindowText Lib "user32.dll" Alias "GetWindowTextA" ( _
    ByVal hWnd As Long, _
    ByVal lpString As String, _
    ByVal cch As Long) As Long
Private Declare Function GetWindowTextLength Lib "user32.dll" Alias "GetWindowTextLengthA" ( _
    ByVal hWnd As Long) As Long
Private Declare Function GetClassName Lib "user32.dll" Alias "GetClassNameA" ( _
    ByVal hWnd As Long, _
    ByVal lpClassName As String, _
    ByVal nMaxCount As Long) As Long
Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" ( _
    ByVal hWnd As Long, _
    ByVal wIndx As Long) As Long

Private Const GWL_STYLE = -&H10
Private Const WS_VISIBLE = &H10000000
Private Const WS_BORDER = &H800000

Private lngRow As Long

Public Sub prcStart()
    lngRow = 0
    With ThisWorkbook.Worksheets(1)
        .Cells.Clear
        Call EnumWindows(AddressOf fncWindows, ByVal 0&)
        .Columns.AutoFit
    End With
End Sub

Private Function fncWindows(ByVal hWnd As Long, ByVal lParam As Long) As Boolean
    Dim strTemp As String, lngReturn As Long, strClassname As String * 100
    Dim lngStyle As Long
    lngStyle = GetWindowLong(hWnd, GWL_STYLE) And (WS_VISIBLE Or WS_BORDER)
    If lngStyle = (WS_VISIBLE Or WS_BORDER) Then
        lngReturn = GetWindowTextLength(hWnd)
        strTemp = Space$(lngReturn)
        Call GetWindowText(hWnd, strTemp, lngReturn + 1)
        lngRow = lngRow + 1
        GetClassName hWnd, strClassname, 100
        With ThisWorkbook.Worksheets(1)
            .Cells(lngRow, 1) = hWnd
            .Cells(lngRow, 2) = strTemp
            .Cells(lngRow, 3) = Trim(strClassname)
        End With
    End If
    fncWindows = True
End Function


Einfach in eine neue Mappe kopieren und laufen lassen (prcStart). Dein Browser muss dazu natürlich geöffnet sein.
Gruß
Nepumuk

Anzeige
AW: Browser-fenster schließen
01.07.2008 22:32:46
Heiko
Hallo Nepumuk,
habe ein bischen rumprobiert,
aber es tut sich nichts.
oder stelle ich mich doof an.
ergebnis der abfrage:
395130;
BayernViewer der Bayerischen Vermessungsverwaltung - Mozilla Firefox;
MozillaUIWindowClass
wie baue ich denn das in dein erstes makro ein ?
Danke für die mühe
heiko

Anzeige
AW: Browser-fenster schließen
01.07.2008 22:38:00
Nepumuk
Hallo Heiko,
na einfach an Stelle von "IEFrame" für den Internetexplorer, den Klassennamen "MozillaUIWindowClass" benutzen. Damit es keine Verwechslung gibt, solltest du den Namen der Konstanten anpassen. Ich würde an Stelle von "GCCLASSNAMEMSIEXPLORER" den Namen "GCCLASSNAMEFIREFOX" verwenden.
Gruß
Nepumuk

Anzeige
AW: Browser-fenster schließen
01.07.2008 22:46:04
Heiko
Hallo Nepumuk,
jetzt hat es gefunzt.
merci
du bist ein Vba Gott

zu
05.07.2008 14:14:00
zu
zu
;
Anzeige

Infobox / Tutorial

Browserfenster mit Excel VBA schließen


Schritt-für-Schritt-Anleitung

Um ein Browserfenster mit Excel VBA zu schließen, kannst du die folgenden Schritte befolgen. Diese Anleitung basiert auf dem Beispiel von Heiko, der eine Internetseite laden und die Fenster schließen möchte.

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.
  2. Erstelle ein neues Modul:

    • Rechtsklicke im Projektfenster auf "VBAProject (DeineArbeitsmappe)".
    • Wähle Einfügen > Modul.
  3. Füge den folgenden Code ein:

    Option Explicit
    
    Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
       ByVal lpClassName As String, _
       ByVal lpWindowName As String) As Long
    
    Private Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" ( _
       ByVal hWnd As Long, _
       ByVal wMsg As Long, _
       ByVal wParam As Long, _
       ByVal lParam As Any) As Long
    
    Private Const WM_CLOSE = &H10
    Private Const GCCLASSNAMEFIREFOX = "MozillaUIWindowClass"
    
    Public Sub CloseBrowserWindow()
       Dim hWnd As Long
       hWnd = FindWindow(GCCLASSNAMEFIREFOX, vbNullString)
       If hWnd <> 0 Then
           PostMessage hWnd, WM_CLOSE, 0, 0
       End If
    End Sub
  4. Führe das Makro aus:

    • Gehe zurück zu Excel, drücke ALT + F8, wähle CloseBrowserWindow und klicke auf Ausführen.

Häufige Fehler und Lösungen

  • Fehler: Fenster schließen funktioniert nicht
    Lösung: Vergewissere dich, dass der Klassennamen korrekt ist. Für Firefox sollte es MozillaUIWindowClass sein. Für den Internet Explorer nutze IEFrame.

  • Fehler: Zugriff auf das Fenster verweigert
    Lösung: Stelle sicher, dass das Fenster aktiv ist und keine Dialogfelder geöffnet sind, die die Interaktion blockieren.


Alternative Methoden

Eine alternative Methode, um Browserfenster zu schließen, besteht darin, die URL im gleichen Fenster zu laden, anstatt neue Fenster zu öffnen. Hierzu kannst du den Internet Explorer über Excel steuern:

Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.Navigate "http://deine-url.de"

Du kannst dann die URL aktualisieren, ohne ein neues Fenster zu öffnen.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du die Browserfenster mit Excel VBA verwalten kannst:

  1. Alle Fenstertypen auflisten:

    Public Sub ListAllWindows()
       ' Deine Code hier, um alle offenen Fenster aufzulisten
    End Sub
  2. Aktualisieren der URL in einem bestehenden Fenster:

    ie.Navigate "http://neue-url.de"

Tipps für Profis

  • Nutze Sleep in deinem Code, um sicherzustellen, dass der Browser genügend Zeit hat, um die Seite zu laden, bevor du einen Screenshot machst.
  • Verwende Error Handling, um Fehler beim Schließen von Fenstern besser zu verwalten.

FAQ: Häufige Fragen

1. Frage
Wie kann ich mehrere Browserfenster schließen?
Antwort: Du kannst eine Schleife verwenden, um durch alle Fenster zu iterieren und sie mit FindWindow und PostMessage zu schließen.

2. Frage
Funktioniert das auch mit dem Edge-Browser?
Antwort: Ja, für den Edge-Browser musst du den entsprechenden Klassennamen verwenden. Erkundige dich, um den korrekten Klassennamen zu finden.

3. Frage
Kann ich die Fenster schließen, während sie minimiert sind?
Antwort: Ja, es ist möglich, minimierte Fenster zu schließen, solange du den richtigen Klassennamen verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige