Anzeige
Archiv - Navigation
1792to1796
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

Internetseite aufrufen und wieder schlie

Internetseite aufrufen und wieder schlie
10.11.2020 16:10:23
reiner
Hallo Leute,
https://www.herber.de/bbs/user/141453.xlsb
das Öffnen der gewählten Seite -im Firefox-Browser- nach Betätigen der Schaltfläche „Weltzeit“ funktioniert; nach 10 Sekunden soll die Seite wieder geschlossen werden, aber das klappt leider noch nicht.
Wie muss deProgrammcode geändert werden damit die vor 10 Sekunden aufgerufene Seite wieder selbstätig schließt und die Excel-Tabelle angezeigt wird?
mfg
reiner

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

Betreff
Datum
Anwender
Anzeige
AW: Internetseite aufrufen und wieder schlie
10.11.2020 17:59:52
onur

Declare PtrSafe Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long)  _
As Long
'Falls 32-Bit EXCEL - oben PTRSAFE weglassen
Const SW_SHOWMAXIMIZED = 3
Sub Weitzeit()
Dim objExplorer
Set objExplorer = CreateObject("InternetExplorer.Application")
objExplorer.Navigate ("www.weltzeit.de/zeitzonenkarte.php?lang=de")
RC = ShowWindow(objExplorer.hwnd, SW_SHOWMAXIMIZED)
Application.Wait (Now + TimeValue("0:00:10")) '10 Sekunden anzeigen
'wshshell.Quit 'schliessen
objExplorer.Application.Quit
Set objExplorer = Nothing
End Sub

Anzeige
AW: Internetseite aufrufen und wieder schlie
10.11.2020 19:08:52
volti
Hallo onur,
kleine Ergänzung:
Handles sollten bei VBA7 bzw. 64 Bit immer vom Typ LongPtr sein.
Code:

#If VBA7 Then
  Declare PtrSafe Function ShowWindow Lib "user32" (ByVal hwnd As LongPtr, _
          ByVal nCmdShow As Long) As Long
#Else
  Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, _
          ByVal nCmdShow As Long) As Long
#End If
Const SW_SHOWMAXIMIZED = 3

viele Grüße
Karl-Heinz
Anzeige
AW: Internetseite aufrufen und wieder schlie
10.11.2020 19:09:13
reiner
hallo onur,
wenn ich deinen Vorschlag einfüge wird die "Declare...-Zeile" ROT markiert, solange bis ich sie auskommentiere, daraus schließe ich auf ein 64-bit Excel 2007.
Die Ausführung des Makros hängt bei erreichen der Zeile:

RC = ShowWindow(objExplorer.Hwnd, SW_SHOWMAXIMIZED)

somit ist ein erfolgreicher Test nicht möglich.
Dein Code ruft den IE auf; ich hatte in meiner Anfrage den Firefox-Browser erwähnt.
Magst du deinen Code daraufhin noch einmal überarbeiten?
Ich hatte versäumt darauf hinzuweisen das beim Schließen nach 10 Sekundee natürlich nur die zuletzt von Excel geöffnete Seite wieder geschlossen werden soll, andere evtl. geöffnete Tabs im Firefo9x-Browser sollen geöffnet bleiben.
Anzeige
AW: Internetseite aufrufen und wieder schlie
10.11.2020 19:46:25
volti
Hallo Reiner,
hier ein Beispiel, wie Du eine Anwendung schließen kannst, wenn Dir der Caption nicht komplett bekannt ist. Wäre er bekannt, ging's auch einfacher....
Allerdings schließt er wohl komplett den Browser und die Seite musss aktiv sein. Ich habe nur unter Edge getestet.
Vielleicht bringt Dich das ja weiter:
Code:
[Cc][+][-]

Private Declare PtrSafe Function GetForegroundWindow Lib "user32" () As LongPtr Private Declare PtrSafe Function GetWindow Lib "user32" ( _ ByVal hwnd As LongPtr, ByVal wCmd As Long) As LongPtr Private Declare PtrSafe Function GetWindowTextLengthA Lib "user32" ( _ ByVal hwnd As LongPtr) As Long Private Declare PtrSafe Function GetWindowTextA Lib "user32" ( _ ByVal hwnd As LongPtr, ByVal lpString As String, _ ByVal cch As Long) As Long 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 Const WM_CLOSE = &H10 Private Const GW_HWNDFIRST = 0 Private Const GW_HWNDNEXT = 2 Dim hwnd As LongPtr Sub CloseWebSite() 'Schließt eine Anwendung Dim Text As String, L As Long 'Alle Fenster durchscannen hwnd = GetWindow(GetForegroundWindow(), GW_HWNDFIRST) Do While hwnd <> 0 L = GetWindowTextLengthA(hwnd) + 1 Text = Space$(L) L = GetWindowTextA(hwnd, Text, L) If Text Like "*Weltzeit*" Then PostMessageA hwnd, WM_CLOSE, 0&, 0& Exit Do End If DoEvents hwnd = GetWindow(hwnd, GW_HWNDNEXT) 'Handle des nächsten Fensters Loop End Sub

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

Anzeige
danke Karl-Heinz
11.11.2020 11:21:54
reiner
danke Karl-Heinz,
werde deinen Vorschlag ausgiebig testen
AW: Internetseite aufrufen und wieder schlie
10.11.2020 18:04:26
Herbert_Grom
Hallo reiner,
nach meinem Dafürhalten ist dies nicht möglich. Du kannst höchstens die Excel-AM schließen, nachdem du die Weltzeituhr aufgerufen hast:
Sub Weitzeit()
Dim wshshell, DieseAM As Workbook
Set DieseAM = ThisWorkbook
Set wshshell = CreateObject("WScript.Shell")
wshshell.Run "www.weltzeit.de/zeitzonenkarte.php?lang=de"
DieseAM.Close False
Set wshshell = Nothing
Set DieseAM = Nothing
End Sub
Probier's mal
Servus
AW: Internetseite aufrufen und wieder schlie
10.11.2020 18:09:48
onur
Natürlich geht das - siehe meine Antwort. :)
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige