vba internet explorer删除对象

时间:2017-09-02 09:50:41

标签: excel vba excel-vba internet-explorer

我制作简单的vba脚本女巫会打开IE,得到一些信息并退出。脚本打开IE浏览器35次没有问题,但之后它可以工作,但不再打开IE浏览器。

Sub Test()
for x=1 to 50
    Dim objIE As Object
    Set objIE = New InternetExplorer
    Set objIE = New InternetExplorerMedium
    objIE.Visible = True
    objIE.Navigate2 "http://www.google.com"
    objIE.Visible = False
    Set objIE = Nothing
next x
End Sub

2 个答案:

答案 0 :(得分:1)

我真的没有得到您想要的代码,但这里有一些可能有助于解决问题的提示:

  1. 你可以将你的浏览器的声明和设置都放在循环中,你不需要声明它并且每次都设置它:

    Dim objIE As Object
    Set objIE = New InternetExplorerMedium
    
  2. 为什么将objIE设置为New InternetExplorer,如果您在将其再次设置为New InternetExplorerMedium后仍然正确?这个动作毫无用处。

  3. objIE.Navigate2 "http://www.google.com"Set objIE = Nothing之间,您应该等待一段时间,至少使用Do While objIE.busy Loop,因为您甚至没有给浏览器加载时间文件,你已经破坏它。

  4. Set objIE = Nothing也可以被置于循环之外,您可以重复使用相同的浏览器来导航任意数量的链接。此外,不要忘记先使用objIE.quit

  5. 从记忆中摧毁它之前先将其退出

    如果从36日开始工作35次并继续“正在工作但无所事事”,那么当你到达那里时,想知道链接是否已损坏。 您可以在每次要导航的链接上使用Debug.Print进行检查。

答案 1 :(得分:0)

这是使用VBA自动化IE的基本结构。

Option Explicit

Sub PAO()

    Dim IE As InternetExplorer
    Dim url As String
    Const url$ = "http://www.google.com"

    Set IE = CreateObject("internetexplorer.application")

    IE.Visible = True
    IE.navigate url

    Set IE = Nothing

End Sub

此外,这是一个Wait函数,可以帮助您等待网页加载。

Function IEWait(t As Long)

    Do While IE.Busy
        Application.Wait DateAdd("s", t, Now)
    Loop

End Function

这是您使用该功能的方式:

IEWait (1)
Do Until IE.readyState = READYSTATE_COMPLETE: DoEvents: Loop

希望这会对您有所帮助,但如果您有任何疑问,请告诉我。