Internet Explorer与VBA中的MSHTML 2.XMLHTTP60

时间:2014-01-10 22:51:39

标签: html vba excel-vba automation mshtml

我在尝试控制IE形式的VBA时患有这种易怒的IE综合症。我打算打开一个网站并寻找一个特定的文件(即XLS),然后下载它。

我的代码:

Dim IE as InternetExplorer  ' I could also use "Object" here
Dim HTMLDoc as HTMLDocument
Dim OHTML_Element as IHTMLElement

Set IE = New InternetExplorer  ' I could also use "InternetExplorerMedium" here
IE.Silent = True
IE.Navigate (sURL)
IE.Visible = True

Set HTMLDoc = IE.document
mimtype = "Microsoft Office Excel 97-2003 Worksheet"
For Each oHTML_Element In HTMLDoc.Links
    If InStr(oHTML_Element.mimeType, mimtype) Then
        If InStr(oHTML_Element.href, FileType) Then
            ' Get the SOURCE file and DESTINATION files
            SRCfile = mainURL & oHTML_Element.pathname
            FileName = DESTPath & oHTML_Element.nameProp
            'Download the file
            ret = URLDownloadToFile(0, SRCfile, FileName, 0, 0)
            'See if the download happened correctly
            If ret = 0 Then
                'all went well
                GetFile = True
            Else
                MsgBox "There was a problem downloading the file.", vbCritical, "DOWNLOADING ERROR!"
                GetFile = False
                Exit Function
            End If
            Exit For
        End If
    End If
Next oHTML_Element

现在,在过去的几个月里,这似乎始终如一。从过去两天开始,系统在IE.navigate(sURL之后挂起。在调试模式下,我可以清楚地看到创建的IE对象的所有字段,但在执行IE.navigate(sURL)之后,对象的所有字段都会消失,但网站会正确打开。但是,这个问题不是很“一致”,所以它可能会消失或不会因此而烦躁!这个“消失”字段是危险的,因为我有一个if条件来检查字段是否为空,如果True退出。

只是一点背景,我在Win 7,IE 11上(昨天在IE 10上出现此问题后升级,之前它已经与IE 10合作了好几个月)

在搜索WWW之后,似乎有些人正在遇到这个问题。 Stackoverflow上有一个解决方案建议使用MSHTML.XMLHTTP60。所以,我试过了,

Dim IE as MSHTML2.XMLHTTP60
Dim HTMLDoc as MSHTML.HTMLDocument
Dim HTMLBod as 

Set IE = new MSHTML2.XMLHTTP60
IE.open "Get", sURL, False
IE.send

Set HTMLDoc = new MSHTML.HTMLDocument
HTMLDoc.body.innerHtml  = IE.responseText

???? How do I proceed further to "search" for a XLS file and gets its "href" link?

我已经尝试在HTMLDoc(使用MSHTML)和HTMLDoc(使用InternetExplorer)中查看数据(通过观察窗口),但数据似乎并不相同。所以我之前的“搜索mime-type& href和下载”的程序将不起作用。

如果有人能对它有所了解,我将非常感激。我正在寻找一种解决方案,帮助我纠正InternetExplorer的不一致行为或使用MSHTML2的解决方案

1 个答案:

答案 0 :(得分:1)

嗯...经过四十多个小时的挣扎并在网上搜寻并找不到任何可以解决我的dim IE as InternetExplorer类型对象问题的东西,我“终于”手指交叉解决了{{1}崩溃的问题。

由于IE浏览器中的某些“错误”设置,似乎发生了此错误,您可能已自行更改了设置或某些附加组件或某些其他操作可能已更改这些设置。救援的另外“重置”! IE“Internet选项”对话框中有一个“重置”按钮,这会将IE重置为标准设置,所有问题都在我这样做后消失了!