2013-07-01 16 views
6

Sto cercando di utilizzare VBA per inviare dati da Excel a un modulo Web online. Il problema si verifica all'interno dell'area * in cui sto tentando di selezionare e aggiornare il modulo. Ho provato una varietà di opzioni (getelement per ID, nome, ecc.) Senza alcun successo. Credo che il problema abbia a che fare con l'identificazione dell'elemento appropriato. Ho visto consigli sull'utilizzo della funzione Local in VBA, ma non sono sicuro di come usarlo a questo scopo. Ho la sensazione che qualcuno con una certa esperienza sia in grado di capirlo molto velocemente guardando il codice sorgente sul webiste, usando la gente del posto in VBA o qualche altra tecnica.VBA per immettere i dati online e inviare il modulo

Il modulo è impostato in modo che tutti i campi siano di testo e posso inserire/inviare dati online senza problemi.

Grazie in anticipo per qualsiasi aiuto/suggerimento.

Dim IE As Object 

Sub submitFeedback3() 
Application.ScreenUpdating = False 

Set IE = CreateObject("InternetExplorer.Application") 
IE.Visible = True 
IE.Navigate "http://spreadsheetbootcamp.com/excel-efficiency-trainer-feedback/" 

Application.StatusBar = "Submitting" 
    ' Wait while IE loading... 
While IE.Busy 
DoEvents 
Wend 
********************************************************************** 
IE.Document.getElementById("Form_Attempts-1372643500")(0).Value = "1" 
IE.Document.getElementById("submit-1-1372643500")(0).Click 
********************************************************************** 
Application.StatusBar = "Form Submitted" 
IE.Quit 
Set IE = Nothing 

Application.ScreenUpdating = True 
End Sub 
+0

Quella pagina è completamente rotto in IE8 –

+0

Puoi inserire dati/presentare? Questo è l'unico scopo di questa pagina web. –

+0

Tutto quello che vedo sono una dozzina di caselle di testo non etichettate e un pulsante "invia". Guardando l'HTML, però, sarebbe meglio provare a compilare le caselle di testo in base ai loro nomi (che sembrano essere costanti) rispetto ai loro ID (che sembrano avere un suffisso numerico che cambia) –

risposta

4

Prova sottostante Codice

Dim IE As Object 

Sub submitFeedback3() 
    Application.ScreenUpdating = False 

    Set IE = CreateObject("InternetExplorer.Application") 
    IE.Visible = True 
    IE.Navigate "http://spreadsheetbootcamp.com/excel-efficiency-trainer-feedback/" 

    Application.StatusBar = "Submitting" 
    ' Wait while IE loading... 
    While IE.Busy 
     DoEvents 
    Wend 
    ' ********************************************************************** 
    delay 5 
    IE.Document.getElementById("experience-1372700847").Value = "ddddd1" 
    delay 5 
    IE.Document.getElementById("Form_Time_Best-1372700847").Value = "ddddddddddd2" 
    delay 5 
    IE.Document.getElementById("submit-1-1372700847").Click 
    '********************************************************************** 
    Application.StatusBar = "Form Submitted" 
    IE.Quit 
    Set IE = Nothing 

    Application.ScreenUpdating = True 
End Sub 

Private Sub delay(seconds As Long) 
    Dim endTime As Date 
    endTime = DateAdd("s", seconds, Now()) 
    Do While Now() < endTime 
     DoEvents 
    Loop 
End Sub 
+0

Ho usato un diverso set up per i moduli e ho ottenuto tutto per funzionare perfettamente. Grazie per il suggerione a tutti. –

+0

Sto usando lo stesso codice. Alla fine fa clic su un pulsante per navigare in una nuova pagina. Una volta fatto, non posso accedere agli elementi della nuova pagina. Che cosa potrei mancare. – Richa

+0

@Richa Dovresti assicurarti che la pagina abbia finito di caricare. Ho creato un semplice sottotitolo per aiutare a realizzare questo: 'Sub IEBusy (IE_Object As Object)' 'Do While IE_Object.Busy o IE_Object.ReadyState <> 4'' DoEvents' 'Loop'' Exit Sub'. Devi solo usare "Chiama IEBusy (IE)" ed è così semplice aspettare che la pagina finisca il caricamento. –

Problemi correlati