2017-06-26 1 views
0

Ich versuche, klicken Sie auf eine Schaltfläche über VBA, aber es sagt mir, dass das "Objekt diese Eigenschaft oder Methode nicht unterstützt".Wie klicke ich auf eine Schaltfläche auf einer Webseite über VBA?

Mein VBA-Code jetzt ist:

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

Der HTML-Code für die Schaltfläche ist:

<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' und 'getelementByClass ("qm_historyTab_GoButton")' '>> getElementsByClassName ("qm_historyTab_GoButton") (0)' –

+0

Ich habe versucht, dies mit, aber es hat nicht funktioniert. Um sicherzustellen, dass ich es nicht vermasselt habe, füge ich meinen Code an: 'IE.document.getelementByClass (" qm_historyTab_GoButton ") (0) .Click' – Sheldon

+0

' getelementByClass' ist keine Sache, wie ich in meinem Artikel darauf hingewiesen habe Kommentar. –

Antwort

0

Ok, also habe ich die Lösung in diesem bestimmten Fall gefunden. Die Schaltfläche ist ein Übermittlungsart und sendet eine Nachricht mit HTMLInputElement.

Was ich tun musste, war "Microsoft HTML Object Library" zu meinen Referenzen hinzuzufügen und diese Funktionen zu nutzen.

Ich hatte die Variable zu erstellen, die die Antwort senden würde:

Dim htmlInput As MSHTML.HTMLInputElement

Ich konnte nicht herausfinden, wie man dieses spezifische Element beziehen individuell so packte ich alles mit seinen Klassennamen.

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

Dann hatte ich das Programm durchläuft jedes Element in der Serie und eine Antwort einreichen senden. Da dies der einzige mit dem Klassennamen war, hatte ich Glück.

Also jedenfalls, so habe ich das Problem gelöst.

1

Try this:

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

Beide der getXXX Methoden liefern eine Sammlung von Elementen (auch wenn es nur eine Übereinstimmung in dem Dokument gibt), um ein einzelnes Element zu adressieren, fr om die letzte, um es zu klicken Sie benötigen die (0)

EDIT hinzuzufügen: wenn das Ziel das Formular abzuschicken ist dann dies auch

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

funktioniert oder wie es nur eine Taste ist mit dieser Klassenname:

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

Das funktioniert immer noch nicht. Es sagt mir "Laufzeitfehler '408': Objekt unterstützt keine Eigenschaft oder Methode". Ich verwende die genauen Zeilen, die Sie angegeben haben. 'IE.document.getElementsByTagName (" button ") _ .getelementsByClassName ("qm_historyTab_GoButton") (0) .Click' Die Website ist https://web.tmxmoney.com/pricehistory.php?qm_symbol=CM. Die Schaltfläche ist: ' GO' Es ist ein Senden Sie den Typ, damit die Klickfunktion nicht funktioniert, aber ich weiß es nicht – Sheldon

Verwandte Themen