经过几次迭代互联网资源管理器挂起后的VBA

时间:2017-03-22 15:34:32

标签: vba excel-vba internet-explorer excel

我在加载时挂起了Intenet Explorer的问题。 我写了一个代码,打开了两个Internet Explorer对象。一个对象加载房屋列表,宏将这些列表拉到网址,另一个浏览器对象(IE2)通过这些列表在浏览器中加载它们。这是网站:https://asunnot.oikotie.fi/myytavat-asunnot?previousSearchId=25

我在我的工作计算机(Windows 7)上使用了这个宏,它运行正常。但是,当我在我的笔记本电脑上尝试使用这个宏时,IE2加载了大约10个列表,之后当IE2尝试加载另一个列表url(linkki2)时,它只是继续加载网页而没有出现在浏览器中的任何内容。如果我关闭宏并在同一个列表中重新启动它,它会正常加载并适用于另外十次加载,直到再次失败。我试图避免使用即使用MSXML2.XMLHTTP,但这不会加载所有必需的代码。我需要以下部分<a href ="https://asunnot.oikotie.fi/myytavat-asunnot/tampere/13665769"但是使用

xml_obj.Open "GET", url, False
xml_obj.send
html_doc.body.outerHTML = xml_obj.responseText

没有告诉我网站的完整代码。

以下是相关代码。

Function oikotie(i, IE2, ie, linkki, y)
k = 0

ie.navigate (linkki & y)
Do While ie.ReadyState <> 4 And ie.Busy: DoEvents: Loop
Application.Wait (Now + TimeValue("0:00:04"))
p = 0
'i = 784
Do While k <= 23
    'kaynnistaIE2
    If p = 9 Then
        ActiveWorkbook.Save
        p = 0
    End If
    linkki2 = ie.document.body.getelementsbyclassname("small-12 medium-4 large-3 columns left")(k).getelementsbytagname("a")(0).href

    IE2.navigate (linkki2)
    Do While IE2.ReadyState <> 4 And IE2.Busy: DoEvents: Loop
    Application.Wait (Now + TimeValue("0:00:10"))
    t = 0

    Do While t <= 6
        If InStr(IE2.document.body.getelementsbyclassname("collapse target-properties ng-isolate-scope collapsable expanded")(2).getelementsbyclassname("row accordion_padding")(t).innertext, "Taloyhtiön nimi") <> 0 Then
            Cells(i, 5).Value = IE2.document.body.getelementsbyclassname("collapse target-properties ng-isolate-scope collapsable expanded")(2).getelementsbyclassname("row accordion_padding")(2).getelementsbyclassname("large-8 medium-9 columns left-align property")(0).innertext
            i = i + 1
            Exit Do
        End If
        t = t + 1
    Loop
    p = p + 1
    k = k + 1
Loop

oikotie = i

End Function

我想知道如何解决IE2加载和永不完成的问题,或者根本不需要使用浏览器的解决方法。

0 个答案:

没有答案