运行时错误424所需对象 – VBA + Internet Explorer = Weblogin

我正在尝试使用VBA和Internet Explorerlogin到网站。 这导致运行TIme错误424“对象需要”。

这是我的代码。 寻找你的专家意见。

Sub Website() Dim IE As Object, Doc As Object, UserName As Object, Password As Object, strCode As String Set IE = New InternetExplorerMedium IE.Visible = True IE.Navigate "http://appln.ABC.com/index.epl" Do While IE.ReadyState <> 4: DoEvents: Loop Set Doc = IE.Document Set UserName = Doc.getElementById("login_usr") UserName.Value = "ABCDE" Set Password = Doc.getElementById("login_password") Password.Value = "ABCDE" Set btnLogin = Doc.getElementById("Login") btnLogin.Click End Sub 

你有没有尝试在这个例子中提出的方法?

使用VBA在网页中填写用户名和密码

我认为你需要

 Set IE = CreateObject("InternetExplorer.Application") 

在你的代码中,你实际上并没有创build一个对象,你只是声明它。

编辑

也许绕过你的Doc对象的使用:

 Sub Website() Dim IE As Object, UserName As Object, Password As Object, strCode As String Set IE = New InternetExplorerMedium IE.Visible = True IE.Navigate "http://appln.ABC.com/index.epl" Do While IE.ReadyState <> 4: DoEvents: Loop Set UserName = IE.Document.getElementById("login_usr") UserName.Value = "ABCDE" Set Password = IE.Document.getElementById("login_password") Password.Value = "ABCDE" Set btnLogin = IE.Document.getElementById("Login") btnLogin.Click End Sub 

在链接的例子中,他们只使用一个对象,似乎你不需要为你所做的每件事情创build对象。 所以,你可能会逃避:

 Sub Website() Dim IE As Object Set IE = New InternetExplorerMedium IE.Visible = True IE.Navigate "http://appln.ABC.com/index.epl" Do While IE.ReadyState <> 4: DoEvents: Loop With IE.Document .getElementById("login_usr").Value = "ABCDE" .getElementById("login_password").Value = "ABCDE" .getElementById("Login").Click End With End Sub 

您也可以添加第二个while while循环来处理就绪状态,就像那个链接的例子一样。

 Sub website() Dim ie As Variant Set ie = CreateObject("InternetExplorer.Application") ie.Visible = True ie.navigate "http://appln.ABC.com/index.epl" Do While ie.readyState <> 4: DoEvents: Loop ie.document.getElementById("login_usr").Value = "ABCDE" ie.document.getElementById("login_password").Value = "ABCDE" ie.document.getElementById("Login").Click End Sub 

我不知道如何,但当我设置

  IE.Visible = False 

我不再有错误了。 请尝试,如果可能的话解释为什么会发生..