Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用VBA在IE中单击按钮_Vba_Excel_Ie Automation - Fatal编程技术网

使用VBA在IE中单击按钮

使用VBA在IE中单击按钮,vba,excel,ie-automation,Vba,Excel,Ie Automation,我正在使用Excel VBA尝试单击站点上的按钮,以下是使用inspect元素的站点代码: <button class="_ah57t _84y62 _frcv2 _rmr7s">ClickHere</button> 点击这里 以下是我在VBA中所做的工作: Sub testcode() Dim ie As InternetExplorer Dim html As HTMLDocument Set ie = New InternetExplorer ie.Visibl

我正在使用Excel VBA尝试单击站点上的按钮,以下是使用inspect元素的站点代码:

<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
子测试代码()
Dim ie作为InternetExplorer
将html设置为HTMLDocument
Set ie=新的InternetExplorer
可见=真实
浏览“somesite.com”
在ie.READYSTATE READYSTATE\u完成时执行此操作
多芬特
环
暗淡的
Set e=ie.Document.getElementsByClassName(“\u ah57t\u 84y62\u frcv2\u rmr7s”)
e、 点击
端接头
通过调试,我发现代码似乎在变量e中存储了一个名为“[object]”的东西,然后在到达e.click时给出了一个运行时错误“438”。我甚至尝试过先使用.Focus,但都出现了相同的错误。有什么想法吗?

该函数返回一个集合,而不是单个元素。为了返回单个元素,需要在返回的集合上指定索引。如果类中只有一个元素,您可以简单地使用:

ie.Document.getElementsByClassName("_ah57t _84y62 _frcv2 _rmr7s")(0).Click
(0)
指定从类返回的集合中元素的索引

很容易判断函数是返回集合还是返回单个元素:

  • getElementBy…
    -返回单个元素
  • getElementsBy…
    -返回元素的集合
该函数返回集合,而不是单个元素。为了返回单个元素,需要在返回的集合上指定索引。如果类中只有一个元素,您可以简单地使用:

ie.Document.getElementsByClassName("_ah57t _84y62 _frcv2 _rmr7s")(0).Click
(0)
指定从类返回的集合中元素的索引

很容易判断函数是返回集合还是返回单个元素:

  • getElementBy…
    -返回单个元素
  • getElementsBy…
    -返回元素的集合

别开玩笑了,这个问题每天至少被问一次。你看过相关的问题了吗?错误438表示
e
没有
单击
(或
聚焦
)方法。抱歉,因为我无意添加到“类似问题”列表中。我搜索了错误以及类似的问题,但无法找出它不起作用的原因…您提到的应用于变量e的单击方法不是问题,问题是根据下面的答案-元素末尾的“s”!我想我需要检查一下我的眼睛!!!记录在案,这就是问题所在
e
是元素的集合,意味着
e
没有
单击方法。否则您就不会得到运行时错误438“对象不支持属性或方法”-这就是错误消息的意思。不开玩笑,这个问题每天至少被问一次。你看过相关的问题了吗?错误438表示
e
没有
单击
(或
聚焦
)方法。抱歉,因为我无意添加到“类似问题”列表中。我搜索了错误以及类似的问题,但无法找出它不起作用的原因…您提到的应用于变量e的单击方法不是问题,问题是根据下面的答案-元素末尾的“s”!我想我需要检查一下我的眼睛!!!记录在案,这就是问题所在
e
是元素的集合,意味着
e
没有
单击方法。否则,您就不会收到运行时错误438“对象不支持属性或方法”-这就是错误消息的意思。非常感谢您,我的视力一定在衰退,因为我多次查看此代码,直到您提到后才注意到“s”!我现在觉得有点傻!再次感谢。这是一个非常普遍的问题!很高兴我能帮上忙。非常感谢你,我的视力一定在衰退,因为我看了这么多次这个代码,直到你提到它后才注意到“s”!我现在觉得有点傻!再次感谢。这是一个非常普遍的问题!很高兴我能帮忙。