VBA打开URL,等待5秒,然后打开另一个URL

时间:2014-11-11 12:05:14

标签: vba sleep openurl

我有一个我要打开的网页(网址是用Excel中的单元格值生成的),但直接转到该网址需要登录才能打开。但是,如果我首先打开服务器的主页,我有自动登录,然后我就可以打开第一个URL而无需用户/通行证。

到目前为止,我有这个代码,它在同一个窗口中同时打开两个URL的IE,但是不同的选项卡,正如我想要的那样,除了URL2需要登录。 为了解决登录问题,我想在导航和导航2之间添加一个暂停,这样第一页就可以在第二个URL打开之前完成加载。

任何人都可以帮我吗?

编辑: 我尝试了下面的建议,但仍需要登录。我尝试了另一个解决方案,它不是可选的,但它可以工作。它由两个按钮组成,运行不同的宏,第一个按钮打开主页面以获取登录,第二个按钮打开下一个URL。 我写的如下:

第一个:

Sub login()
 Dim IE As Object

  Const navOpenInNewTab = &H800
 Set IE = CreateObject("InternetExplorer.Application")
  IE.Visible = True
  IE.Navigate "http://www.example.mainpage.com"
End Sub

第二个:

Sub search()
 Dim IE As Object

  Const navOpenInNewTab = &H800
 Set IE = CreateObject("InternetExplorer.Application")
  IE.Visible = True
  IE.Navigate2 "http://www.example.mainpage.com" & Range("w1").Cells.Value & Range("W2").Cells.Value, CLng(navOpenInNewTab)

End Sub

是否有可能让第三个宏运行另外两个宏并在它们之间有延迟?

原始代码:

Sub open_url()
 Dim IE As Object
  Const navOpenInNewTab = &H800
 Set IE = CreateObject("InternetExplorer.Application")
  IE.Visible = True
   IE.Navigate "http://www.example.mainpage.com"
'here I would like to add a pause for 5 seconds
   IE.Navigate2 "http://www.example.mainpage.com" & Range("w1").Cells.Value & Range("W2").Cells.Value, CLng(navOpenInNewTab)
End Sub

2 个答案:

答案 0 :(得分:1)

也许最好等到第一页完全加载:

   IE.Navigate "http://www.example.mainpage.com"
   Do While IE.Busy Or Not IE.readyState = IE_READYSTATE.complete: DoEvents: Loop
   IE.Navigate2 "http://www.example.mainpage.com" & Range("w1").Cells.Value & Range("W2").Cells.Value, CLng(navOpenInNewTab)

请注意,ReadyState enum READYSTATE_COMPLETE的数值为4.这是在后期绑定的情况下应该使用的(在VBScript中总是如此)。

答案 1 :(得分:0)

你的意思是:

Application.Wait(Now + TimeValue("00:00:05"))