vba - 在 VBA 中关闭除 1 之外的所有 IE 窗口

标签 vba excel internet-explorer

我正在使用以下代码关闭所有 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/

相关文章:

excel - 打开数据验证下拉列表后立即触发 VBA 宏?

java - 如何将 JDBC 模板结果导出到 Excel 工作表

excel - 在文件夹和子文件夹中搜索包含特定扩展名的所有文件

javascript - top.window.location Internet Explorer 权限被拒绝错误

html - 如何防止 Internet Explorer 在按下时向按钮添加填充?

VBA:安全通道支持中发生错误

vba - 遍历VBA中的指定工作表

excel - 为一系列列运行相同的 VBA 代码(一次一列)

html - 在 IE 中忽略 flex 容器最小高度

Excel 绘图工具或 VBA 解决方案