我目前正在使用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的连接?
答案 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`