我有一个我要打开的网页(网址是用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
答案 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"))