J'ai besoin de trouver et d'appuyer sur un bouton sur une page web à l'aide de VBA
J'ai écrit une macro qui ouvre une page web, trouver les spots que j'ai besoin de mettre les données dans la, et je veux la macro de frapper un pré-remplir le bouton, puis appuyez sur Ok.
Le code source d'une page pour le bouton:
<input type="text" size="30" maxlength="40" name="name" id="name">
<input type="button" value="Prefill" onclick="prefill()">
J'ai été à la recherche de réponses toute la semaine et je pense que j'ai une compréhension de base de la façon dont cela est censé fonctionner par l'exécution d'une boucle pour la recherche, mais j'ai pas de chance dans mon effort de réellement se présente au travail.
Quelqu'un peut me montrer la boucle qui va chercher ma page pour ce bouton?
Vous en remercie d'avance.
Demandé de code jusqu'à présent
Private Sub Populate_Click()
Dim i As Long
Dim IE As Object
Dim objElement As Object
Dim objCollection As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate "website" 'make sure you've logged into the page
Do
DoEvents
Loop Until IE.READYSTATE = 3
Do
DoEvents
Loop Until IE.READYSTATE = 4
ActiveSheet.EnableCalculation = False
ActiveSheet.EnableCalculation = True
Call IE.document.getelementbyid("name").SetAttribute("value", ActiveSheet.Range("b2").Value)
Call IE.document.getelementbyid("aw_login").SetAttribute("value", ActiveSheet.Range("a2").Value)
Set objCollection = IE.document.getElementsByTagName("input")
i = 0
While i < objCollection.Length
If objCollection(i).Type = "button" And _
objCollection(i).Name = "Prefill" Then
Set objElement = objCollection(i)
End If
i = i + 1
Wend
objElement.Click
End Sub
Pouvez-vous poster le code que vous avez jusqu'à présent?
Je suis curieux de savoir si VBA peut être utilisé pour une fonction si étranger, donc je vais rester à l'écoute. Vous pouvez probablement supprimer la
Selon la façon dont vous le faites, vous pouvez simplement appeler directement la fonction à l'intérieur du bouton, au lieu de simuler un clic sur le bouton. Si vous êtes à l'aide de la IHTMLDocument, vous pouvez utiliser
A quoi sert le bouton? Si par exemple, le code HTML du bouton:
Dans le code HTML que vous avez posté, le bouton n'a pas de
Je suis curieux de savoir si VBA peut être utilisé pour une fonction si étranger, donc je vais rester à l'écoute. Vous pouvez probablement supprimer la
macros
tag, et vous voudrez peut-être dire que la version d'Office que vous utilisez.Selon la façon dont vous le faites, vous pouvez simplement appeler directement la fonction à l'intérieur du bouton, au lieu de simuler un clic sur le bouton. Si vous êtes à l'aide de la IHTMLDocument, vous pouvez utiliser
document.ExecScript([javascripthere])
.A quoi sert le bouton? Si par exemple, le code HTML du bouton:
<button onclick="thisAction()">Do Something</button>
, alors vous pouvez utiliser document.ExecScript("thisAction()","javascript")
à faire ce que le bouton est censé faire quand on clique dessus.Dans le code HTML que vous avez posté, le bouton n'a pas de
name
attribut, mais il a une value
. Dans votre boucle, vous êtes à la recherche d'une correspondance sur name
au lieu de value
.OriginalL'auteur Michaeljwjr | 2013-06-18
Vous devez vous connecter pour publier un commentaire.
Dirait que vous êtes assez proche, c'est ce que j'ai utilisé pour faire quelque chose de similaire
Vous aurez probablement juste de changer si l'instruction.
Je remarque aussi que ton code fait référence à
.Name = "Prefill"
mais votre extrait de code html fait référence à.value = "Prefill"
OriginalL'auteur Rick