我正在使用以下代码关闭所有 IE 窗口。这是错误处理的一部分,当我的较大功能挂起或崩溃时,它会自动启动一个新窗口。发生这种情况时,我想关闭除 1 之外的所有 IE 窗口(我想保持最后一个打开以保持 session ,因此浏览器在再次打开时不必重新进行身份验证)。
我可以更新下面的循环,以便它关闭除最后一个以外的所有 IE 窗口(它打开哪个特定窗口无关紧要,只是打开一个)。
Function closeallIE()
Dim objWMI As Object, objProcess As Object, objProcesses As Object
Set objWMI = GetObject("winmgmts://.")
Set objProcesses = objWMI.ExecQuery( _
"SELECT * FROM Win32_Process WHERE Name = 'iexplore.exe'")
For Each objProcess In objProcesses
Call objProcess.Terminate
Next
Set objProcesses = Nothing: Set objWMI = Nothing
Debug.Print wait(3)
End Function
最佳答案
您可以使用 Count
属性并将 PID 与 Taskkill 一起使用:
Sub closeallIE()
Dim objWMI As Object, objProcess As Object, objProcesses As Object
Set objWMI = GetObject("winmgmts://.")
Set objProcesses = objWMI.ExecQuery( _
"SELECT * FROM Win32_Process WHERE Name = 'iexplore.exe'")
Dim j As Integer
j = objProcesses.Count
For Each objProcess In objProcesses
If j > 1 Then Shell "taskkill /f /PID " & CStr(objProcess.ProcessID), vbHide
j = j - 1
Next
Set objProcesses = Nothing
Set objWMI = Nothing
End Sub
关于vba - 在 VBA 中关闭除 1 之外的所有 IE 窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37378150/