2016-01-24 104 views
0

所以我有一些代码去一个网站,然后登录。然后我需要它去到密码更改网址。有时,当我运行代码,我得到以下错误:Excel VBA对象IE自动化所需的错误

Runtime Error 424: Object Required

有时调试器说,这是第一个发言的getElementById,但大多数时候,它说,问题是过去三年的getElementById声明。代码如下:

Dim ie As Variant 
Dim strURL As String 
Sub login() 


Set ie = New SHDocVw.InternetExplorer 
ie.Visible = True 
ie.navigate "https://minecraft.net/profile" 

While ie.Busy 
DoEvents 
Wend 

ie.document.getElementById("username").Value = "ddd" 
ie.document.getElementById("password").Value = "ddddddddddd" 

Dim htmlForm As HTMLFormElement 
Set htmlForm = ie.document.getElementById("loginForm") 
htmlForm.submit 
' ********************************************************************** 
'IE.Document.getElementById("username").Value = "ddddd" 
' IE.Document.getElementById("password").Value = "ddddd" 
' IE.Document.getElementById("signin").Click 
'********************************************************************** 
'Pause while page loads 


Application.Wait (Now + #12:00:03 AM#) 
ie.navigate "https://minecraft.net/profile/password" 

ie.document.getElementById("oldPassword").Value = "oldpass" 
ie.document.getElementById("password").Value = "enwapss" 
ie.document.getElementById("passwordConfirmation").Value = "enwapss" 


Set htmlForm = ie.document.getElementById("loginForm") 
htmlForm.submit 

End Sub 

在此先感谢!

回答

1

可能是因为该网站在尝试输入值时未完全加载,网站未处于就绪状态。

ie.navigate " https://minecraft.net/profile/password "

尝试增加

Do Until Not ie.Busy And ie.readyState = 4
DoEvents
Loop

这将循环播放,直到网页加载相似,你已经与

Application.Wait (Now + #12:00:03 AM#)

+0

完成它在你上面的代码的方式谢谢!像魅力一样工作 –