VBA脚本在intranet上失败



我目前正在使用Office 2010、Visual Basic for Applications 7和Internet Explorer 9。

我目前遇到的问题是,在我们的intranet上使用IE对象似乎失败了,我想知道是否有解决方案。

功能代码:

Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Navigate "http://www.google.com"
WaitUntilReady IE
'Application.Wait (Now + TimeValue("00:00:10"))
'IE.Visible = True
MsgBox (IE.Document.body.innerHTML)

破损代码:

Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Navigate "http://intranet/"
WaitUntilReady IE
'Application.Wait (Now + TimeValue("00:00:10"))
'IE.Visible = True
MsgBox (IE.Document.body.innerHTML)

函数化代码正是它应该做的。制作一个不会在屏幕上明显显示的IE对象,并返回一个包含google.com HTML代码内容的消息框

损坏的代码加载我们的内联网主页,在可见的IE窗口中,并返回此错误:

Run-time error '-2147417848 (80010108)'
Automation error
The object invoked has disconnected from its clients

我读过Excel VBA Controlling IE本地intranet,它建议使用IP地址而不是intranet,因为IP指向不同的启动屏幕,所以不起作用。

我也试过使用

Set IE = New InternetExplorerMedium

但这个A-似乎也不起作用,而B-意味着要确保我所有的同事都启用这个参考。

此外,我试过先加载google.com,然后让它导航到intranet/,这也没有帮助。

有人有什么建议吗?据我所知,加载intranet/是导致IE以某种方式与Excel断开连接吗?

SO!经过几天的研究,我完全不知道发生了什么,在另一篇文章中,我偶然发现有人在谈论intranet兼容性模式。

"力";Internet Explorer 8〃;intranet 中的浏览器模式

当我读到这篇文章时,我突然意识到,如果IE以兼容性加载,这将解释为什么Excel VBA宏失去了对IE的控制,因为兼容性模式可能是作为IE的单独实例加载。

设置>Internet选项>安全>本地Intranet>站点>

禁用"自动检测intranet"并启用"包括所有网络路径(UNCs)"完美地修复了我遇到的错误。

'simply replace -seem to work
' Set ie = CreateObject("InternetExplorer.Application")
Set ie = New InternetExplorerMedium

另一种解决方案

Set IE = CreateObject("InternetExplorer.Application")
IE.Navigate ("http://URLOnMyIntranet/site.html")
IE.Visible = True
Set IE = nothing
Set objShellApp = CreateObject("Shell.Application")
For Each objWindow In objShellApp.Windows
    Debug.Print objWindow.LocationName
     If LCase(objWindow.LocationName) = LCase("Your windows name, use debug to find out") Then
            Set IE = objWindow
     End If
Next`enter code here`

另请参阅这篇文章

相关内容

  • 没有找到相关文章

最新更新