VBA:Excelmacros代码更正

我正在寻找一个VBA代码,可以帮助我点击一个网页上的button。 我从其中一个按预期工作的站点获得了下面的VBA。

Sub followWebsiteLink() Dim ie As InternetExplorer Dim html As HTMLDocument Dim Link As Object Dim ElementCol As Object Application.ScreenUpdating = False Set ie = New InternetExplorer ie.Visible = True ie.navigate "https://www.google.co.in" Do While ie.readyState <> READYSTATE_COMPLETE Application.StatusBar = "Loading website…" DoEvents Loop Set html = ie.document Set ElementCol = html.getElementsByTagName("a") For Each Link In ElementCol If Link.innerHTML = "Google Pixel 2" _ 'Or u can use "Advertising" Then Link.Click End If Next Link Set ie = Nothing Application.StatusBar = "" Application.ScreenUpdating = True End Sub 

但是,如果我用我想要的网站名称replace它,它不会工作。

**我所做的修改如下**

 ie.navigate "https://www.flipkart.com/" For Each Link In ElementCol If Link.innerHTML = "Log In" _ And Link.getElementsByClassName = "_2k0gmP" _ Then Link.Click End If Next Link 

试试这个代码,为我工作,点击Log In

 #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 

编辑

你可以使用这段代码来获取href:

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

或者得到InnerText:

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

那么你可以使用条件如:

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

要么

 For Each Element In buttonclick If Element.innerText = "Log In" Then Element.Click Next