我正在尝试在VBA上创建一个宏来登录雅虎。 但是我也很难提交密码部分,因为用户名/密码在不同的页面上。
我一直收到错误
运行时错误'424'需要对象
在.Document.getElementById("login-passwd").Value
行。
Sub WebLogin()
Set IE = CreateObject("InternetExplorer.Application")
With IE
.Visible = True
.Navigate "https://login.yahoo.com/"
Do Until .ReadyState = READYSTATE_COMPLETE
DoEvents
Loop
.Document.getElementById("login-username").Value = "username"
.Document.getElementById("login-signin").Click
Do Until .ReadyState = READYSTATE_COMPLETE
DoEvents
Loop
'Application.Wait (Now + TimeValue("0:00:10"))
.Document.getElementById("login-passwd").Value = "password*"
.Document.getElementById("login-signin").Click
End With
End Sub
我认为找不到HTML元素,但我已经尝试添加一个延迟,另一个代码用于等待页面加载,没有什么可以工作。
以下是两个字段的特定HTML代码。
<input name="username" tabindex="1" class="phone-no " id="login-username" autofocus="true" type="text" placeholder="Insira seu e-mail" value="" autocorrect="off" autocapitalize="none">
<input type="password" id="login-passwd" name="password" placeholder="Senha" autofocus="">
任何sugestions?
答案 0 :(得分:0)
运行时错误“424”被引发,因为Cursor rawQuery (String sql, String[] selectionArgs)
rawQuery("SELECT Train_name FROM Train_list WHERE Train_no = ?", new String[] {message.substring(0,(message.length()-3)});
不存在,并且您尝试访问其IE.Document.getElementById("login-passwd")
.Value
中的错误处理是使用标签完成的,并且可以很快变得非常难看。
您需要定义标签和VBA
语句
让我们定义这个子程序:
On Error
现在应将您的代码修改为:
Sub WaitAndFeed(ByRef IE, ByVal field As String, ByVal value As String)
On Error GoTo NoObjErr
While Not (IE.Document.getElementById(field) Is Nothing)
NoObjErr:
DoEvents
IE.Document.getElementById(field).Value = value
IE.Document.getElementById("login-signin").Click
Wend
End Sub