VBA:Excel宏代码更正 [英] VBA: Excel macro code correction

查看:92
本文介绍了VBA:Excel宏代码更正的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找一个VBA代码,该代码可以帮助我单击网页上的按钮.我从其中一个可以正常工作的站点获得了以下VBA.

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

但是,如果我将其替换为所需的站点名称,它将无法正常工作.

But if I replace it with the site name I want, it wont work.

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

**The changes I made are as follows **

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

Try this code, worked for me to click on 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:

Edit

You can use this code to get the href:

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

或者获取InnerText:

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

这篇关于VBA:Excel宏代码更正的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆