Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
988to992
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
988to992
988to992
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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

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

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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige