Versuchen, dies zu verwenden, um alle Instanzen von Explorer zu schließen, bevor einige Funktionen ausgeführt werden, die Daten von webbasierten Servern abrufen, aber ein Problem auftritt, wenn es versucht Schließen Sie einen geöffneten Browser mit mehreren Tabs. Wenn der Benutzer nur ein IE-Fenster (ein Tab) geöffnet hat, schließt es es einfach und geht weiter; Wenn diese Benutzer mehrere Fenster separat geöffnet haben (nicht in einem Fenster), schließt sie alle gut und geht weiter; aber aus irgendeinem Grund, wenn ein Fenster mit mehreren Tabs geöffnet ist, dann bekomme ich Laufzeitfehler '-2147217406 (80041002)': "Nicht gefunden". Jede Hilfe, die dabei hilft, wird sehr geschätzt.Beendet alle Explorer-Instanzen über VBA - Excel
Antwort
nicht genau das, was Sie aufgefordert, aber ein anderer Ansatz, der Powershell verwendet und enthält eine Option (von here Fenster nur zu schließen, wenn IE ist seit mehr als X Sekunden geöffnet.
Sub Comesfast()
X2 = Shell("powershell.exe get-process iexplore | ? { ([DateTime]::Now - $_.StartTime).TotalSeconds -gt 05 } | stop-process", 1)
End Sub
Dieses Problem wird durch verursacht wird, Art und Weise, wie IE Tabs behandelt Es gibt 1 Hauptinstanz von IE und für jede Registerkarte wird der neue Prozess iexplore erstellt Daher werden beim Schließen der Haupt-Host-Instanz auch alle tabsbezogenen Prozesse geschlossen Es verursacht einen Fehler in Ihrem Code, weil Die Auflistung, die Sie aufzählen, ist eine Momentaufnahme des Zustands von früher, und Sie versuchen, nicht existierende Prozesse zu schließen rved im TaskManager.
nun beantworten, wie Sie Ihren Code verbessern (natürlich einfach auf Fehler Lebenslauf nächste würde auch helfen, aber verlässt nach der ersten Instanz geschlossen konnte nicht genug sein, wenn der Benutzer mehrere Sitzungen geöffnet hat):
Private Sub CommandButton1_Click()
Dim objWMI As Object, objProcess As Object, objProcesses As Object
Do
Set objWMI = GetObject("winmgmts://.")
Set objProcesses = objWMI.ExecQuery("Select * FROM Win32_Process Where Name = 'iexplore.exe'")
If objProcesses.Count > 0 Then
For Each objProcess In objProcesses
objProcess.Terminate
Exit For
Next
End If
Loop While objProcesses.Count > 0
Set objProcesses = Nothing
Set objWMI = Nothing
Unload WebForm
End Sub
Ich habe das versucht, aber habe das gleiche Problem – Selrac
- 1. Excel-Arbeitsblatt über VBA ausblenden
- 2. Excel VBA - Summenwerte über Arbeitsblätter
- 3. VBA Excel Validierungsliste über Variablenbereich
- 4. Excel VBA Autofill über Spalten
- 5. VBA-Shell-Befehl beendet unerwartet Excel ohne Fehlermeldung
- 6. Wenn leere Schleife in Excel VBA vorzeitig beendet
- 7. Löschen Sie alle doppelten Zeilen Excel vba
- 8. Verwendung von „(Alle)“ in Excel VBA
- 9. Excel VBA Sortierung nicht alle Spalten sortiert
- 10. Excel VBA Schleife Verbraucht alle Speicher
- 11. Excel VBA - indirekte Kopie über Zeilen-/Spaltenadresse?
- 12. Excel VBA - nur Zellbearbeitungen über Code aktivieren
- 13. Öffnen einer Excel-Arbeitsmappe über VBA
- 14. Excel VBA: Iterieren über mehrere Bereiche
- 15. Excel VBA-Klassenvariable Entleerung über Funktionsaufrufe
- 16. Excel-Tabellen über VBA teilen und speichern
- 17. Suche VBA-Code über mehrere Excel-Dateien
- 18. Löschen von Tabellenabfragen vollständig über Excel VBA
- 19. E-Mail über MailEnvelope (VBA, Excel) senden
- 20. Hochladen über SFTP mit Excel VBA-Code
- 21. Excel beendet Worksheet_Change-Ereignis
- 22. Excel VBA Varailable Spaltenauswahl
- 23. Excel vba
- 24. Excel VBA: Forward ParamArray
- 25. Excel VBA Fehlerbehandlung Code
- 26. Deaktivieren Sie alle CheckBoxes aus Excel-Arbeitsmappe mit VBA-Makro
- 27. Ausführen mehrere Makros, um über mehr Excel-Dateien - vba
- 28. Excel VBA, wie kann ich alle meine sichtbaren Felder zählen?
- 29. Excel VBA - Berechnen in VBA
- 30. Cell Färbung VBA Excel
Eine schnelle und Der schmutzige Weg besteht darin, 'On Error Resume Next' und' On Error GoTo 0' um 'objProcess.Terminate' zu wickeln. Ich debuggte auf meinem Computer und stellte fest, dass beim ersten Terminate-Aufruf alle Fenster gleichzeitig geschlossen wurden, unabhängig davon, ob mehrere Tabs geöffnet waren oder nicht. Vielleicht mach es einfach einmal und beende die Schleife. –