Excel VBA用于自动化网站

时间:2018-08-14 16:04:37

标签: html excel vba

我是excel vba的初学者。 我正在尝试按ID单击html元素,但是它不起作用

这是我的网站代码... 我导航到网站并输入用户名和密码。没关系,就像我在代码中提到的那样,它们都可以正常工作,但是在我登录(我附加了一个图像链接)后,当我检查要单击的html时,它显示如下...

HTML Element Codes

Sub WebAuto()

Dim objIE As New InternetExplorer

Dim oHTML_Element As IHTMLElement

Dim inputCollection As HTMLElementCollection

Dim i As HTMLInputElement

Dim obj As Object



objIE.Visible = True


objIE.Navigate ("***")      'for example

Do

DoEvents

Loop Until objIE.ReadyState = 4

objIE.Document.getElementById("uid").Value = "***"             'user ID typed
objIE.Document.getElementById("password").Value = "***"        'pw typed


With objIE.Document

    Set obj = .getElementsByTagName("input")
    'Debug.Print TypeName(aeiou)

    For Each i In obj

        If (i.getAttribute("value") = "Log In") Then
            i.Click
            Debug.Print "Logged In"
            Do
            DoEvents
            Loop Until objIE.ReadyState = 4

        End If

    Next i
End With

End Sub

HTML Element to click

这是我关于堆栈溢出的第一个问题,因此,如果我有任何错误,请原谅我。谢谢大家。

1 个答案:

答案 0 :(得分:-2)

您需要指定您的对象可以接受事件。

只需将其定义为Set obj = objIE.Document.getElementById("siteDetails") 不是永恒的。

您需要以下代码来指示对象发生事件:

Public WithEvents obj As OBJECT

在以上将OBJECT更改为类的过程中,您正在将对象初始化为(使用您定义obj的行,例如DIM obj为ABC)