Vba 我该如何解决这个问题;运行时错误'-2147023706(800704a6)“;?

Vba 我该如何解决这个问题;运行时错误'-2147023706(800704a6)“;?,vba,excel,runtime-error,Vba,Excel,Runtime Error,我对此代码有一个大问题: Sub EstrazDati_A_ieri() Dim doc As HTMLDocument Dim output As Object Set IE = New InternetExplorer IE.Visible = False IE.navigate Range("D2") Do DoEvents Loop Until IE.readyState = READYSTATE_COMPLETE Set doc = IE.document Se

我对此代码有一个大问题:

Sub EstrazDati_A_ieri()

Dim doc As HTMLDocument
Dim output As Object

Set IE = New InternetExplorer
IE.Visible = False
IE.navigate Range("D2")

Do
    DoEvents
    Loop Until IE.readyState = READYSTATE_COMPLETE

Set doc = IE.document
Set output = doc.getElementsByTagName("a")

For Each link In output
    If link.innerHTML = "Main" Then
        Range("D3").Value2 = link
    End If

Next
IE.Quit

End Sub
代码正确且有效,但有时在连续使用其自身后,会出现一个Windows框,并在此行显示运行时错误:

Set IE = New InternetExplorer
我已经测试了在互联网上找到的几种解决方案,但我无法修复它


p、 我是一个意大利男孩,对糟糕的英语感到抱歉:)

我在互联网上找到了这个解决方案,现在它可以工作了,你认为它对吗

Sub EstrazDati_A_ieri()
On Error Resume Next

Dim doc As HTMLDocument
Dim output As Object

Set IE = New InternetExplorer
IE.Visible = False
IE.navigate Range("D2")

Do
    DoEvents
    Loop Until IE.readyState = READYSTATE_COMPLETE

Set doc = IE.document
Set output = doc.getElementsByTagName("a")

For Each link In output
    If link.innerHTML = "Main" Then
        Range("D3").Value2 = link
    End If

Next
IE.Quit
Set IE = Nothing
End Sub
编辑:现在我已经用这种方式尝试了

Sub EstrazDati_A_ieri()
Dim IE As Object
Dim doc As HTMLDocument
Dim output As Object

Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = False
IE.navigate Range("D2")

Do
    DoEvents
    Loop Until IE.readyState = READYSTATE_COMPLETE

Set doc = IE.document
Set output = doc.getElementsByTagName("a")

For Each link In output
    If link.innerHTML = "Main" Then
        Range("D3").Value2 = link
    End If

Next
IE.Quit
Set IE = Nothing
End Sub
但在第八次运行这些宏错误之后:(

好的,伙计们!这样就不会出错。问题是我不会每次打开一个新网页,但我会使用相同的网页,因为我必须重复运行这个宏12次。 如何修改这行代码

Set IE = CreateObject("InternetExplorer.Application")

此运行的频率有多高,可能是IE本身、长脚本、messagebox显示等方面的问题。请执行任务管理器,检查IE是否仍处于活动状态。如果IE未打开,请尝试先抓取一个打开的IE,使用错误捕获创建一个。在Quiddo
设置IE=New InternetExplorerMedia
工作后尝试doevnts?或者aybe
Set IE=CreateObject(“InternetExplorer.Application”)
?另外,当你指的是在连续使用后,你是指你运行sub一次,它循环了很多次,并给出了一个错误?还是说它运行了一次,一直运行到最后,当你再次运行它时,它会出错?如果你以高频率运行此代码,你可能希望缓存IE对象,而不是每次都创建一个。如果我记得很清楚Interne的话tExplorer对象在退出后需要一段时间才能被销毁,甚至在函数结束后可能会继续使用资源,从而阻止下一次创建。这是正确的错误代码吗?我的标题说这是
错误\u关机\u已计划好
。看看使用
CreateObject
GetObject
时有一些错误陷阱,因此您只需打开并关闭IE的1个实例,每次只需导航/刷新,因此第一次将花费更长的时间,其他11次将更快。x_x通过该修改不会出现错误,但宏不会响应
Set IE = CreateObject("InternetExplorer.Application")