内部网上的VBA脚本失败

时间:2015-02-06 14:27:14

标签: excel vba internet-explorer excel-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代码内容的消息框

破碎的代码在VISIBLE IE窗口中加载我们的Intranet主页,并返回此错误:

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

我已阅读Excel VBA Controlling IE local intranet,建议使用IP地址而不是内网/因为IP指向不同的启动画面而无效。

我也尝试过使用

Set IE = New InternetExplorerMedium

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

此外,我已经尝试首先加载google.com,然后将其导航到Intranet /,这也没有帮助。

有人有什么建议吗?从我的理解,加载内网/导致IE以某种方式断开与Excel的连接?

2 个答案:

答案 0 :(得分:0)

SO!经过几天的研究并完全失去了正在发生的事情,我在另一篇文章中偶然发现了一个谈论内网兼容模式的人。

Force "Internet Explorer 8" browser mode in intranet

当我读到这篇文章时发生了一些事情,点击了我的脑袋,意识到如果IE兼容性加载,它将解释为什么Excel VBA宏失去了对IE的控制,因为兼容模式可能会作为IE的单独实例加载。 / p>

设置&gt;互联网选项&gt;安全&gt; <本地Intranet>网站&gt;

禁用“自动检测Intranet”并启用“包含所有网络路径(UNC)”可以完美修复我遇到的错误。

答案 1 :(得分:0)

'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`

also see this post