无法使用VBA登录我的帐户

时间:2017-09-27 18:51:45

标签: vba excel-vba internet-explorer excel

在线:

Set ieElement = objIE.Document.getElementsByClassName("sg-btn sg-btn-primary btn-signin")
以下代码的

ieElement.Click会抛出一个名为“Object不支持此属性或方法”的错误。

Sub login()
    Dim objIE As InternetExplorer
    Dim uid As String
    Dim pwd As String
    Dim rng As Range
    Dim sh As Worksheet
    Dim ieElement As Object

    Set sh = Sheets("Indeed Resume Download")
    Set rng = sh.Range("A2")

    On Error Resume Next
    objIE.Quit
    Set objIE = Nothing
    On Error GoTo 0

    uid = rng.Value
    pwd = rng.Offset(0, 1).Value

    Dim j As Long

    Set objIE = New InternetExplorer 'Initialize internet object
    objIE.Navigate "https://secure.indeed.com/account/loginservice=my&hl=en_IN&co=IN&continue=https%3A%2F%2Fwww.indeed.co.in%2F"
    objIE.Visible = True

    objIE.Document.all.signin_email.Value = UserID    
    objIE.Document.all.signin_password.Value = Password

    Set ieElement = objIE.Document.getElementsByClassName("sg-btn sg-btn-primary btn-signin")
    ieElement.Click

    For j = 2 To sh.Cells(Rows.Count, 27).End(xlUp).Row

    Set objIE = New InternetExplorer
    With objIE
    .Navigate sh.Range("CA" & j).Value

    Do While .Busy = True
        DoEvents
    Loop

    Do While .Busy: Loop
    Do While .ReadyState <> READYSTATE_COMPLETE: Loop
    Do While .Busy: Loop

    End With

    Do While objIE.Busy = True
        DoEvents
    Loop

    Next j

    Set objIE = Nothing

End Sub

1 个答案:

答案 0 :(得分:3)

当您使用getElementsByClassName时,您必须确定您想要的类名,因为可能有很多。如果你的类名是唯一的(在这种情况下看起来可能是这样),你可以简单地在末尾添加一个(0)。如果要搜索所有类名,可以使用For Each...Next语句。

注意这些之间的差异: getElementByID()getElementsByClassName()?与ClassName一起使用时,Elements是复数,因此您需要指定所需类的哪个元素。

尝试用此替换你的行:

Set ieElement = objIE.Document.getElementsByClassName("sg-btn sg-btn-primary btn-signin")(0)

您目前使用的方法可以按以下方式使用:

Dim ieElements, ieElemBtn, ieElement
Set ieElements = objIE.Document.getElementsByClassName("sg-btn sg-btn-primary btn-signin")
For Each ieElement in ieElements
    If ieElement ..... Then 
        Set ieElemBtn = ieElement
        Exit For
    End If
Next ieElement 
ieElemBtn.Click