2017-06-26 60 views
0

我想使用通过vba单击按钮,但它告诉我,“对象不支持此属性或方法”。如何通过VBA单击网页上的按钮?

我的VBA代码现在的问题是:

IE.document.getElementByType("button").getelementByClass("qm_historyTab_GoButton").Click 

该按钮的HTML是:

<button class="qm_historyTab_GoButton" type="submit" style="font:normal 11px tahoma,arial,helvetica,sans serif;"> 
    <span class="qm_historyTab_GoButtonText">GO</span> 
</button> 
+0

'getElementByType' >>'getElementByTagName'和'getelementByClass( “qm_historyTab_GoButton”)''>> getElementsByClassName方法( “qm_historyTab_GoButton”)(0)' –

+0

我试着用这一点,但没有奏效。为了确保我没有搞砸,我附上我的代码:'IE.document.getelementByClass(“qm_historyTab_GoButton”)(0).Click' – Sheldon

+0

'getelementByClass'不是一件事,正如我在我的评论。 –

回答

0

好吧,所以我在这个特定的实例中找到了解决方案。该按钮是提交类型,并使用HTMLInputElement发送消息。

我需要做的是添加“微软HTML对象库”到我的参考和利用这些功能。

我不得不创建一个能够发送响应变量:我无法弄清楚如何引用这个特定的元素独立,所以我抓住了它的类名的一切

Dim htmlInput As MSHTML.HTMLInputElement

For Each htmlInput In IE.document.getElementsByClassName("qm_historyTab_GoButton") If Trim(htmlInput.Type) = "submit" Then htmlInput.Click Exit For End If Next htmlInput

然后,我通过系列中每个项目有计划周期和发送响应提交。由于这是唯一一个拥有班级名称的人,所以我很幸运。

所以无论如何,这就是我解决问题的方法。

1

试试这个:

IE.document.getElementsByTagName("button") _ 
    .getelementsByClassName("qm_historyTab_GoButton")(0).Click 

两者的getXXX方法返回一个集合(即使文档中只有一个匹配项),以解决单个项目fr OM最后一个以点击它,你需要添加(0)

编辑:如果目的是提交表单那么这也将工作

IE.document.getElementById("qm_historyForm_7871").submit 

或有只有一个按钮该类名称:

IE.document.getElementsByClassName("qm_historyTab_GoButton")(0).Click 
+0

这仍然无法正常工作。它告诉我“运行时错误'408':对象不支持属性或方法”。我正在使用您提供的确切线条。 'IE.document.getElementsByTagName(“button”)_ 。getelementsByClassName(“qm_historyTab_GoButton”)(0).Click'该网站是https://web.tmxmoney.com/pricehistory.php?qm_symbol=CM。这个按钮是:''这是一个提交类型,所以点击功能将无法正常工作,但我不知道 – Sheldon