代码之家  ›  专栏  ›  技术社区  ›  Error_2646

Excel VBA Web抓取-自动化错误/未指定的错误

  •  1
  • Error_2646  · 技术社区  · 6 年前

    我正在尝试用HTML来刮取和重新格式化一些数据。这是我以前做过的,没有什么问题,但我遇到了一个错误。

    标记“.net”只是因为错误消息和解决方案有很多重叠。

    产生它的最简单情况是:

    Sub main()
    
        Dim ie As InternetExplorer
        Dim htmlDoc As HTMLDocument
    
        Set ie = New InternetExplorer
    
        ie.Visible = True
    
        ' Unfortunately I'm not able to post the true link.
        ' But it is on github in case that's relevant.
    
        ie.navigate "https://pages.github.XXXX.net/XXXXX/XXX-XXXXXX/dev/XXXXXX/data/full/XXXXXX.html"
    
        Do While ie.Busy
            DoEvents
        Loop
    
        Set htmlDoc = ie.document
    
    End Sub
    

    这将返回“运行时错误”-2147467259(80004005)“:自动化错误。未指定的错误”。此错误出现在“set htmldoc=ie.document”行中。当我将等待条件设置为“do while ie.busy or ie.readystate<gt;readystate complete”时,也会发生这种情况。

    但是,使用任何旧链接都是有效的。

    Sub main()
    
        Dim ie As InternetExplorer
        Dim htmlDoc As HTMLDocument
    
        Set ie = New InternetExplorer
    
        ie.Visible = True
    
        ' Unfortunately I'm not able to post the true link.
        ' But it is on github in case that's relevant.
    
        ie.navigate "https://stackoverflow.com/"
    
        Do While ie.Busy
            DoEvents
        Loop
    
        Set htmlDoc = ie.document
    
    End Sub
    

    当我指出Github实例的readyState时,它会显示“0”,如果这是信息性的话。从我读到的其他问题来看,问题似乎在于InternetExplorer对象已经关闭,但我不确定是如何发生的。

    对于这个问题,建议在其他地方“清理”这个项目(去掉所有代码,保存,放回原处),但这对我来说不起作用。

    有什么想法吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Error_2646    6 年前

    答案在这里找到: Excel VBA Controlling IE local intranet

    Github链接是本地Intranet,具有更严格的安全性。在这种情况下,Internet Explorer实例显然很挑剔。

    所以我需要使用

    Set ie = New InternetExplorerMedium
    

    而不是

    Set ie = New InternetExplorer