2017-09-27 7 views
0

を使用してアカウント私にログインすることができません:以下のコードの実際にラインでVBA

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

ieElement.Click「オブジェクトはこのプロパティまたはメソッドをサポートしていません」と呼ばれるエラーがスローされます。

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 
+2

あなたがいるときに 'uid'と' pwd'はを定義しますが、それらを使って、それらを 'UserID'と' Password'と呼んでいます - これは意図的なものかバグでしょうか? – braX

+0

Jean、これは資格情報を非表示にすることを意図しています。ありがとうございました。 –

答えて

3

あなたがgetElementsByClassNameを使用する場合、多くがあることができて、あなたは、あなたが希望しているクラス名を決定する必要があります。あなたのクラス名が一意の場合(この場合はそれが表示される可能性があります)、最後に(0)を追加するだけです。すべてのクラス名を検索する場合は、For Each...Nextステートメントを使用できます。

getElementByID()getElementsByClassName()の違いに注目してください。要素はClassNameと一緒に使用すると複数形ですから、そのクラスのどの要素を指定する必要があります。

これであなたのラインを交換してみてください:

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 
+0

デイヴィスありがとう、それはとてもうまくいった。 –

関連する問題