我制作简单的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
答案 0 :(得分:1)
我真的没有得到您想要的代码,但这里有一些可能有助于解决问题的提示:
你可以将你的浏览器的声明和设置都放在循环中,你不需要声明它并且每次都设置它:
Dim objIE As Object
Set objIE = New InternetExplorerMedium
为什么将objIE
设置为New InternetExplorer
,如果您在将其再次设置为New InternetExplorerMedium
后仍然正确?这个动作毫无用处。
在objIE.Navigate2 "http://www.google.com"
和Set objIE = Nothing
之间,您应该等待一段时间,至少使用Do While objIE.busy Loop
,因为您甚至没有给浏览器加载时间文件,你已经破坏它。
Set objIE = Nothing
也可以被置于循环之外,您可以重复使用相同的浏览器来导航任意数量的链接。此外,不要忘记先使用objIE.quit
如果从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
希望这会对您有所帮助,但如果您有任何疑问,请告诉我。