VBA找不到现有的IE会话

时间:2018-10-29 06:32:54

标签: excel vba excel-vba internet-explorer

有许多文章介绍如何查找现有的IE会话,然后与之合作。由于某些原因,它们对我不起作用。

我有以下代码可以创建IE 11会话。有时,我手动终止了VBA代码。剩下的IE会话是孤立的。

Set IE = GetObject("InternetExplorer.Application")
If IE Is Nothing Then Set IE = CreateObject("INTERNETEXPLORER.APPLICATION")
With IE
    .Visible = True
    .Navigate  URL

我找到了许多文章,其中包含各种代码来查找现有的IE会话,但它们对我不起作用。以下代码是示例。

Sub test_is()

Dim IE As SHDocVw.InternetExplorer

On Error Resume Next
Set IE = GetObject(, "InternetExplorer.Application")
Debug.Print Err.Description
On Error GoTo 0

If IE Is Nothing Then
Set IE = CreateObject("InternetExplorer.Application")
If IE Is Nothing Then
Debug.Print "error getting IE"
Else
IE.Quit
End If
End If
End Sub

当到达“设置IE = GetObject(,“ InternetExplorer.Application”)“时,Debug.Print报告“ ActiveX组件无法创建对象” “。

随着代码的继续,创建了IE会话,然后退出了。那是唯一的IE会话退出。由其他代码创建的其他IE会话保持不变。我已经尝试了至少六个在NET上找到的代码。他们为某些人工作,但从不为我工作。

以下是另一个示例:

Sub Find_IE_Windows()

Dim Shell As Object
Dim IE As Object

Set Shell = CreateObject("Shell.Application")

For Each IE In Shell.Windows
    If TypeName(IE.Document) = "HTMLDocument" Then
        MsgBox "Internet Explorer window found:" & vbCrLf & _
            "LocationURL=" & IE.LocationURL & vbCrLf & _
            "LocationName=" & IE.LocationName
        IE.Quit
    End If
Next

End Sub

在我的情况下,Shell.Windows.Count为零。因此,代码从For循环直接转到End Sub。

在其他情况下,当我运行Excel,IE 11和MS Edge时,Shell.Windows.Count为2。那两个外壳窗口是文件资源管理器会话,不是Excel,不是Edge,不是IE 11。

我已经选中了Microsoft Internet控件,Microsoft HTML对象库,Microsoft Shell控件和自动化。我还缺少其他图书馆吗?

唯一有效的代码是此代码,但它阻止MS Edge联机。所以,不能使用它。

Sub IE_Sledgehammer()
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
End Sub

我正在运行Windows 10 Pro和Excel 2010。

0 个答案:

没有答案