我有一个vba代码,可以将数据从Excel工作表上传到网站。但是,代码在Win7系统和IE浏览器8中运行良好,但它在win8 IE浏览器11上不起作用。 以下是代码的一部分:
Dim objIE As SHDocVw.InternetExplorer
Dim htmlDoc As MSHTML.HTMLDocument
Dim htmlFrame As MSHTML.HTMLFrameElement
Dim frame As HTMLIFrame
Dim htmlElement As HTMLDTElement
Dim myDoc As Object
Set curSheet = ActiveWorkbook.ActiveSheet
Set oShApp = CreateObject("Shell.Application")
For Each oWin In oShApp.Windows
If oWin.Name = "Windows Internet Explorer" Then
Set IE = oWin
Exit For
End If
Next
If IE Is Nothing Then
MsgBox ("Please sign into Avocado, then re-run this macro")
Set IE = New InternetExplorerMedium
IE.Visible = True
IE.navigate "https://www.google.com"
Exit Sub
End If
Sheets("Prepare").Select
fPathName = Cells(5, 5)
Call MakeFolders(fPathName)
Call MakeFolders2(fPathName)
Call MakeFolders3(fPathName)
'fFileName = fPathName & "\*.xls"
fFileName = Dir(fPathName & "\*.xls")
当进入语句时,代码在循环中运行:“如果IE是Nothing那么” 即使打开谷歌网站,该程序仍然会一直提示msgBox,并一次又一次地重新打开网站,它永远不会执行到最后一部分“表格(”准备“)。选择”。我很困惑,因为它在IE 8浏览器中运行良好。我想知道IE11和IE8在vba IE功能方面是否有任何区别。 请仔细阅读并给我一些想法,非常感谢您的帮助。非常感谢你。
答案 0 :(得分:0)
我认为您使用的是旧版本的Internet Explorer。使用我提供的代码,看看它是否有效。请确保您的项目中添加了以下参考:
如果您不确定如何添加对代码的引用,请查看此链接。External References
Sub Test()
Dim objIE As InternetExplorer
Dim htmlDoc As HTMLDocument
Dim htmlFrame As HTMLFrameElement
Dim frame As HTMLIFrame
Dim htmlElement As HTMLDTElement
Dim myDoc As Object
Dim curSheet As Worksheet
' Set the variables
Set curSheet = ActiveWorkbook.ActiveSheet
Set objIE = New InternetExplorer
' Make the browser visible and navigate
With objIE
.Visible = True
.navigate "https://www.google.com"
End With
WaitForInternetToLoad objIE
Sheets("Prepare").Select
fPathName = Cells(5, 5).Value
Call MakeFolders(fPathName)
Call MakeFolders2(fPathName)
Call MakeFolders3(fPathName)
'fFileName = fPathName & "\*.xls"
fFileName = Dir(fPathName & "\*.xls")
End Sub
Sub WaitForInternetToLoad(ByRef ie As InternetExplorer)
Do
dovents
Loop While Not ie.readyState = READYSTATE_COMPLETE
End Sub
嗨,我发现你遇到了一些麻烦,我想伸出援手。
首先,您要在代码中使用两个外部库;并且您应该为它们设置引用以使代码正常工作。看我的图片我突出了库黄色。
有什么区别:
是照顾互联网对象的人。它创建了一个Internet Explorer应用程序,并导航到某些链接。一旦完成导航到网址然后"互联网对象"有一个" 文件"。此对象无法执行任何其他操作。
该库负责处理Html文档。正如您可能猜到的那样,您将分配" 文档"从上一个对象(Internet Explorer)到HTML文档变量,然后您可以进行进一步的操作。
答案 1 :(得分:0)
我遇到了同样的问题,发现在IE 11中,shell.application的窗口名称发生了变化。早期版本的名称为" Windows Internet Explorer",但IE 11仅使用&# 34; Internet Explorer"
如果您相应地更改了if条件,它将再次起作用......