使用 VBA 在 IE 中单击按钮
Clicking a button in IE using VBA
我正在使用 Excel VBA 来尝试点击网站上的按钮,这里是使用检查元素的网站代码:
<button class="_ah57t _84y62 _frcv2 _rmr7s">ClickHere</button>
这就是我在 VBA 中所做的事情:
Sub testcode()
Dim ie As InternetExplorer
Dim html As HTMLDocument
Set ie = New InternetExplorer
ie.Visible = True
ie.Navigate "somesite.com"
Do While ie.READYSTATE <> READYSTATE_COMPLETE
DoEvents
Loop
Dim e
Set e = ie.Document.getElementsByClassName("_ah57t _84y62 _frcv2 _rmr7s")
e.Click
End Sub
使用调试,我发现代码似乎在变量 e 中存储了一个名为“[object]”的东西,然后在到达 e.click 时给出运行时错误“438”。我什至尝试过先使用 .Focus,但得到了同样的错误。有什么想法吗?
getElementsByClassName()
函数 return 是一个集合,而不是单个元素。您需要在 returned 集合上指定一个索引,以便 return 单个元素。如果 class 中只有一个元素,您可以简单地使用:
ie.Document.getElementsByClassName("_ah57t _84y62 _frcv2 _rmr7s")(0).Click
(0)
指定集合 return 中元素在 class 中的索引。
判断函数 return 是集合还是单个元素很容易:
getElementBy...
- Returns 单个元素。
getElementsBy...
- Returns 元素集合。
我正在使用 Excel VBA 来尝试点击网站上的按钮,这里是使用检查元素的网站代码:
<button class="_ah57t _84y62 _frcv2 _rmr7s">ClickHere</button>
这就是我在 VBA 中所做的事情:
Sub testcode()
Dim ie As InternetExplorer
Dim html As HTMLDocument
Set ie = New InternetExplorer
ie.Visible = True
ie.Navigate "somesite.com"
Do While ie.READYSTATE <> READYSTATE_COMPLETE
DoEvents
Loop
Dim e
Set e = ie.Document.getElementsByClassName("_ah57t _84y62 _frcv2 _rmr7s")
e.Click
End Sub
使用调试,我发现代码似乎在变量 e 中存储了一个名为“[object]”的东西,然后在到达 e.click 时给出运行时错误“438”。我什至尝试过先使用 .Focus,但得到了同样的错误。有什么想法吗?
getElementsByClassName()
函数 return 是一个集合,而不是单个元素。您需要在 returned 集合上指定一个索引,以便 return 单个元素。如果 class 中只有一个元素,您可以简单地使用:
ie.Document.getElementsByClassName("_ah57t _84y62 _frcv2 _rmr7s")(0).Click
(0)
指定集合 return 中元素在 class 中的索引。
判断函数 return 是集合还是单个元素很容易:
getElementBy...
- Returns 单个元素。getElementsBy...
- Returns 元素集合。