2013-06-18 12 views
5

Ho scritto una macro che aprirà una pagina web, troverò gli spot in cui ho bisogno di inserire i dati, e poi voglio che la macro tocchi un pulsante di precompilazione, quindi premi Ok.Ho bisogno di trovare e premere un pulsante su una pagina web usando VBA

Il codice sorgente della pagina per il pulsante è:

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

Sono stato alla ricerca di risposte per tutta la settimana e penso di avere una conoscenza di base di come questo dovrebbe funzionare eseguendo un ciclo per la ricerca per questo, ma non ho fortuna nel mio tentativo di farlo funzionare.

Qualcuno può mostrarmi il ciclo che cercherà la mia pagina per questo pulsante?

Grazie in anticipo.

codice richiesto finora

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

Puoi pubblicare il codice che avete finora? – sigil

+0

Sono curioso di sapere se VBA può essere usato per una funzione così estranea, quindi resterò sintonizzato. Probabilmente puoi rimuovere il tag 'macros', e potresti voler dire quale versione di Office stai usando. – Smandoli

+0

si trova la finestra utilizzando winAPI e si invia un clic –

risposta

4

Sembra che tu sei abbastanza vicino, questo è quello che ho usato per fare qualcosa di simile

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 

Sarà probabilmente solo necessario cambiare l'istruzione if.

Ho anche notato che il codice si riferisce a .Name = "Prefill" ma il vostro frammento di codice HTML si riferisce al .value = "Prefill"

Problemi correlati