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 

我并没有真正想要用你的代码做什么,但是这里有一些提示可能有助于解决这个问题:

  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你应该等待一段时间,至lessDo While objIE.busy Loop ,因为你甚至不给浏览器时间加载文件,你已经摧毁它。

  4. Set objIE = Nothing也可以放在循环之外,你可以重复使用同一浏览器来浏览尽可能多的链接。 另外,不要忘记先退出它,然后用objIE.quit从内存中销毁它

如果它工作了35次,并从第36次开始“继续工作,无所事事”,那么当你到达那里时,就会怀疑链接是否被破坏了。 您可以使用每次您要导航的链接上的Debug.Print进行检查。

这是使用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 

此外,这里有一个Waitfunction,可以帮助您等待网页加载。

 Function IEWait(t As Long) Do While IE.Busy Application.Wait DateAdd("s", t, Now) Loop End Function 

这是你如何使用该function:

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

希望这会帮助你,但如果你有任何问题,请告诉我。