我有一个Excel VBA宏
在登录步骤中我遇到了问题,所以我已经复制了下面这部分代码。执行.click
行后,会出现一个弹出窗口,要求用户单击确定按钮才能继续。宏执行暂停,直到我手动点击弹出窗口中的确定按钮。
http://www.mymedicare.gov网页背后的源代码包含有关弹出窗口的信息,但我无法弄清楚如何使用它以便我可以通过编程方式单击弹出窗口确定按钮。
在确定如何以编程方式点击弹出窗口的确定按钮方面的任何帮助将非常感激。
注意:出于此问题的目的,可以使用任何用户ID和密码。如果你处理弹出窗口,你将被传递到一个页面,上面写着不正确的用户ID /密码。
这表明您已成功处理弹出窗口。
Sub Medicare_Claims()'
' Update the status bar
Application.StatusBar = "Running the Medicare Claims subroutine"
' Open the "MyMedicare web page
Set ie = CreateObject("InternetExplorer.Application")
With ie
.Visible = True
.Navigate "https://www.mymedicare.gov/"
End With
' Loop until the page is fully loaded
Do Until ie.ReadyState = 4 And Not ie.Busy
DoEvents
Loop
' Log-in
ie.Document.all.Item("ctl00_ContentPlaceHolder1_ctl00_HomePage_SWEUserName").Value = "abcde"
ie.Document.all.Item("ctl00_ContentPlaceHolder1_ctl00_HomePage_SWEPassword").Value = "12345"
ie.Document.getElementById("ctl00_ContentPlaceHolder1_ctl00_HomePage_SignIn").Click
' Loop until the page is fully loaded
Do Until ie.ReadyState = 4 And Not ie.Busy
DoEvents
Loop
Application.Wait (Now + TimeValue("0:00:15"))
' Navigate further to the Search Claims" web page
ie.Navigate "https://www.mymedicare.gov/searchclaims.aspx"
答案 0 :(得分:1)
在登录代码后尝试Application.SendKeys "{ENTER}", True
。
另外,尝试添加
Do: DoEvents: Loop Until Not objIE.Busy
和
Do While objIE.readyState <> 4: DoEvents: Loop
只要您需要加载页面。根据我的经验,将两者结合在一起非常有效,而仅使用其中一个有时会产生错误,使用Application.Wait
可能会使代码无法放慢速度。
答案 1 :(得分:1)
如果有人再次通过这种方式,这是Tim Williams提供的解决方案:
'Log-in
ie.Document.all.Item"ctl00_ContentPlaceHolder1_ctl00_HomePage_SWEUserName").Value= "abcde"
ie.Document.all.Item("ctl00_ContentPlaceHolder1_ctl00_HomePage_SWEPassword").Value = "12345"
Dim f As String
f = "function(SignIn){document.getElementById'ctl00_ContentPlaceHolder1_ctl00_HomePage_Agree').value = 'True';}"
ie.Document.parentWindow.execScript "window.ConfirmationPopup = " & f, "jscript"
ie.Document.getElementById("ctl00_ContentPlaceHolder1_ctl00_HomePage_SignIn").Click