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

xls.Mappe wieder aktivieren

xls.Mappe wieder aktivieren
02.05.2013 13:36:45
steffen
Hallo in die Runde,
Dank Eurer Hilfe nutze ich für das Schliessen eines geöffneten Internet_Explorerfensters u.a Code. Den Code habe ich in ein Modul eingefügt.
Private Declare Function GetParent Lib "user32" _
(ByVal hwnd As Long) As Long
Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function PostMessage Lib "user32" _
Alias "PostMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long
Private Declare Function GetWindowText Lib "user32" _
Alias "GetWindowTextA" (ByVal hwnd As Long, _
ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, _
ByVal wCmd As Long) As Long
Const GW_HWNDNEXT = 2
Const WM_CLOSE = &H10
' Das ist ein Teil der Caption des Internetexplorerfensters - anpassen!!!!
Const strSearch As String = "Bericht"
Public Sub IE_Schliessen()
Dim lngReturnValue As Long
Dim strTMP As String * 256
Dim lngHwnd As Long
On Error GoTo Fin
lngHwnd = FindWindow(vbNullString, vbNullString)
Do While Not lngHwnd = 0
If GetParent(lngHwnd) = 0 Then
GetWindowText lngHwnd, strTMP, 256
If InStr(strTMP, strSearch) > 0 Then
lngReturnValue = PostMessage(lngHwnd, WM_CLOSE, 0&, 0&)
End If
End If
lngHwnd = GetWindow(lngHwnd, GW_HWNDNEXT)
Loop
Fin:
If Err.Number  0 Then MsgBox "Error: " & _
Err.Number & " " & Err.Description
MsgBox "Das IE-Fenster wurde geschlossen."
End Sub
Das IE-Fenster wird zwar wie gewünscht geschlossen, aber die Msgbox wird nicht ausgeführt. Statt dessen blinkt die Titelleiste (blau und grau)und in der Taskleiste blinkt die xls-Mappe. Die Msgbox erscheint erst, nachdem ich auf eine andere Anwendung in der Taskleistung kurz geklickt habe und dann wieder auf die xls.Mappe dort klicke.
Merkwürdig erscheint mir auch, dass beim Schließvorgang des IE-Fensters das xls.Fenster, welches auf dem Bildschirm maximal dargestellt wird, plötzlich auf "Fenster wiederherstellen"-Größe schrumpft.
Leider kann ich die Datei hier nicht hochladen.

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

Betreff
Datum
Anwender
Anzeige
AW: xls.Mappe wieder aktivieren
02.05.2013 13:59:27
Beverly
Hi Steffen,
ergänze vor der MsgBox-Zeile noch dieses:
AppActivate Application.Caption
Vielleicht hilft das ja weiter.


AW: xls.Mappe wieder aktivieren
02.05.2013 14:21:01
steffen
hallo Karin,
leider hilft das nicht.

AW: xls.Mappe wieder aktivieren
02.05.2013 14:42:54
Luschi
Hallo Steffen,
schau mal hier: http://support.microsoft.com/kb/186431
Stichwort: BringWindowToTop
Gruß von Luschi
aus klein-Paris

AW: xls.Mappe wieder aktivieren
02.05.2013 18:52:55
steffen
@luschi
oje, wie soll ich da was einbinden?

Anzeige
AW: xls.Mappe wieder aktivieren
03.05.2013 16:07:34
Luschi
Hallo Steffen,
das verstehe ich nicht. Dein Vba-Code wimmelt von sogenannten WinAPI-Funktion und meine gepostete willst Du nicht begreifen. Solltest Du Dir das Alles nur zusammengegoogelt haben, ohne den Sinn dieser hochbrisanten Dinge zu verstehen, dann arbeitest Du sehr risikovoll: denn diese Dinger können auch Inhalt & Dateien löschen, kopieren usw.
Habe Dir mal mal die gepostete WinAPI-Funktion 'BringWindowToTop' eingebaut und getestet:

Option Explicit
Private Declare Function GetParent Lib "user32" _
(ByVal hwnd As Long) As Long
Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function PostMessage Lib "user32" _
Alias "PostMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long
Private Declare Function GetWindowText Lib "user32" _
Alias "GetWindowTextA" (ByVal hwnd As Long, _
ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, _
ByVal wCmd As Long) As Long
Private Declare Function BringWindowToTop Lib "user32" (ByVal _
hwnd As Long) As Long
Const GW_HWNDNEXT = 2
Const WM_CLOSE = &H10
' Das ist ein Teil der Caption des Internetexplorerfensters - anpassen!!!!
Const strSearch As String = "Windows Internet Explorer"
Public Sub IE_Schliessen()
Dim lngReturnValue As Long
Dim strTMP As String * 256
Dim lngHwnd As Long
Dim ok As Boolean
On Error GoTo Fin
ok = False
lngHwnd = FindWindow(vbNullString, vbNullString)
Do While Not lngHwnd = 0
If GetParent(lngHwnd) = 0 Then
GetWindowText lngHwnd, strTMP, 256
If InStr(strTMP, strSearch) > 0 Then
lngReturnValue = PostMessage(lngHwnd, WM_CLOSE, 0&, 0&)
ok = True
Exit Do
End If
End If
lngHwnd = GetWindow(lngHwnd, GW_HWNDNEXT)
Loop
If ok Then
BringWindowToTop ThisWorkbook.Parent.hwnd
MsgBox "Das IE-Fenster wurde geschlossen."
Exit Sub
End If
Fin:
If Err.Number  0 Then
MsgBox "Error: " & Err.Number & " " & Err.Description
End If
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige