2013-06-18 2 views
5

J'ai écrit une macro qui va ouvrir une page Web, trouver les endroits où j'ai besoin de mettre les données, puis je veux que la macro frappe un bouton de pré-remplissage, puis appuyez sur Ok.Je dois trouver et appuyer sur un bouton sur une page Web en utilisant VBA

Le code source de la page pour le bouton est:

<input type="text" size="30" maxlength="40" name="name" id="name"> 
<input type="button" value="Prefill" onclick="prefill()"> 

J'ai cherché des réponses toute la semaine et je pense avoir une compréhension de base de la façon dont cela est censé fonctionner en exécutant une boucle de recherche pour cela, mais je n'ai pas de chance dans mes efforts pour que cela fonctionne vraiment. Est-ce que quelqu'un peut me montrer la boucle qui va chercher dans ma page pour ce bouton?

Merci d'avance.

Code demandé 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 
+1

Pouvez-vous poster le code que vous avez à ce jour? – sigil

+0

Je suis curieux de savoir si VBA peut être utilisé pour une fonction si étrangère, alors je vais rester à l'écoute. Vous pouvez probablement supprimer la balise 'macros', et vous pourriez vouloir dire quelle version de Office vous utilisez. – Smandoli

+0

vous trouvez votre fenêtre en utilisant winAPI et envoyez un clic –

Répondre

4

On dirait que vous êtes assez proche, ce que je l'ai utilisé pour faire quelque chose de similaire

With ie.document 

     Set elems = .getelementsbytagname("input") 
     For Each e In elems 
      If (e.getattribute("className") = "saveComment") Then 
       e.Click 
       Exit For 
      End If 
     Next e 

    End With 

Vous aurez probablement juste changer l'instruction if.

Je remarque aussi que votre code fait référence à .Name = "Prefill" mais votre code HTML fait référence à .value = "Prefill"

Questions connexes