VBA: Excel macro code correction

后端 未结 1 1941
慢半拍i
慢半拍i 2020-12-12 00:50

I am looking for a VBA code that can help me to click a button from a web page. I got the below VBA from one of the sites which works as expected.

Sub follow         


        
相关标签:
1条回答
  • 2020-12-12 01:41

    Try this code, worked for me to click on Log In

    Code

    #If VBA7 Then
    Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
    #Else
    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    #End If
    
    Sub test()
    Dim IE As Object
    Dim htmlDoc As Object
    Dim sURL As String
    
    ' CREATING OBJECT
    Set IE = CreateObject("internetexplorer.application")
    
    sURL = "https://www.flipkart.com/"
    ' WEBPAGE NAVIGATION
    With IE
    .navigate (sURL)
    .Visible = True
    End With
    
    WaitIE IE, 2000
    
    ' CLICK ON LOG IN
    Set htmlDoc = IE.document
    Set buttonclick = htmlDoc.getElementsByClassName("_2k0gmP")
    
    buttonclick(7).Click
    WaitIE IE, 5000
    
    'IE.Quit
    'Set IE = Nothing
    End Sub
    
    Sub WaitIE(IE As Object, Optional time As Long = 250)
    'Code from: https://stackoverflow.com/questions/33808000/run-time-error-91-object-variable-or-with-block-variable-not-set
    Dim i As Long
    Do
        Sleep time
        Debug.Print CStr(i) & vbTab & "Ready: " & CStr(IE.readyState = 4) & _
                    vbCrLf & vbTab & "Busy: " & CStr(IE.Busy)
        i = i + 1
    Loop Until IE.readyState = 4 Or Not IE.Busy
    End Sub
    

    Edit

    You can use this code to get the href:

    For Each Element In buttonclick
    Debug.Print Element.href
    Next
    

    Or to get the InnerText:

    For Each Element In buttonclick
    Debug.Print Element.innerText & " " & i
    i = i + 1
    Next
    'Where i is the number of the item
    

    Then you can use conditional such as:

    For Each Element In buttonclick
    If Element.href = "href_link" Then Element.Click
    Next
    

    OR

    For Each Element In buttonclick
    If Element.innerText = "Log In" Then Element.Click
    Next
    
    0 讨论(0)
提交回复
热议问题