Condividi:        

Compilare form web da excel

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Compilare form web da excel

Postdi calculon » 11/10/11 23:55

Ciao a tutti,
vi avevo chiesto tempo fa se qualcuno qua sul forum poteva darmi una mano a creare un codice in grado di compilare un form sul web.

Vorrei cercare su wiki la parola Italia (contenuta nella cella "a1")

Set IEapp = CreateObject("InternetExplorer.Application")

iURL = "http://www.wikipedia.org"

With IEapp
.Navigate iURL
.Visible = True
End With

Do While IEapp.Busy
DoEvents
Loop

Set casella = IEapp.Document.getElementsByName("search")
If Not casella Is Nothing Then
casella(0).Value = search
End If

Set ElementCol = IEapp.Document.getElementsByTagName("input")
calculon
Utente Senior
 
Post: 161
Iscritto il: 07/01/11 15:08

Sponsor
 

Re: Compilare form web da excel

Postdi calculon » 12/10/11 16:52

E' tutta la mattina che ci penso: aiutatemi sto impazzendooo

Grazie :)
calculon
Utente Senior
 
Post: 161
Iscritto il: 07/01/11 15:08

Re: Compilare form web da excel

Postdi Anthony47 » 13/10/11 01:04

Abbiamo tradotto con google translator (vedi viewtopic.php?f=26&t=89009#p506697), abbiamo cercato con google (vedi viewtopic.php?p=496032#p496000). Mi pare che vuoi aprire Wikipedia e cercare una voce che tu hai inserito in A1, che e' relativamente piu' semplice; ad esempio usi questa macro:
Codice: Seleziona tutto
Sub wikisearchA1()
Dim IeApp As Object    'se Late bind
Set IeApp = CreateObject("InternetExplorer.Application")
iURL = "http://it.wikipedia.org/w/index.php?title=Speciale%3ARicerca&search=" & Range("A1").Value
With IeApp
.Navigate iURL
.Visible = True
End With
'
Do While IeApp.Busy
DoEvents
Loop
'
End Sub

La finestra IE che viene aperta va chiusa manualmente a fine consultazione.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Compilare form web da excel

Postdi calculon » 14/10/11 19:10

Grazie per la risposta.
Purtroppo non sono stato chiaro nello scrivere che in realtà quello che serve a me è un codice che mi permetta di compilare in automatico con una macro un form web (wikipedia era un esempio poco calzante).

Sub corri()



Set appIE = CreateObject("InternetExplorer.Application")

sURL = "http://www.facebook.com"


With appIE
.Navigate sURL
.Visible = True
End With

Do While appIE.busy
DoEvents
Loop


appIE.document.getElementsByname("firstname")(0).Value = Range("a1")


End Sub

Finora sono riuscito a compilare tutti i campi che mi occorrono senza però riuscire ad ordinare l'invio (nell'esempio Registrami).

Su google ho trovato questo codice ma non riesco a farlo

Set ElementCol = appIE.Document.getElementsByTagName


Heeeelp
calculon
Utente Senior
 
Post: 161
Iscritto il: 07/01/11 15:08

Re: Compilare form web da excel

Postdi Anthony47 » 14/10/11 22:49

Devi trovare, nel sorgente della tua pagina web, come si chiama l' oggetto che innesca il processo; nel caso della google search che ti avevo linkato (viewtopic.php?p=496032#p496000) il sorgente include un bottone a cui il programmatore (della pagina html) ha asegnato il nome arbitrario btnG e la macro ne fa il click.
Il tutto e' totalmente dipendente dalla pagina html, che la macro puo' gestire usando metodi e proprieta' disponibili nella libreria Microsoft Internet Controls [richiamata con modalita' "late binding" dalla CreateObject("InternetExplorer.Application")]; ad esempio il ".click" per il pulsante btnG.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Compilare form web da excel

Postdi Anthony47 » 14/10/11 23:12

Con un po' di pazienza ho ricavato i nomi degli oggetti usati in fase di login facebook; queste sono le istruzioni per eseguire il login da vba (da inserire nella macro dal costrutto come quella della google search):
Codice: Seleziona tutto
    With ie
        .Visible = True
        .Navigate "http://www.facebook.com/login.php"
        Do Until .ReadyState = 4: DoEvents: Loop
        .Document.All.Item("email").Value = "LeTueCredenziali_Mail"
        .Document.All.Item("pass").Value = "LeTueCredenziali_Password"
        .Document.All.Item("login").Click
        Do Until .ReadyState = 4: DoEvents: Loop
        Do While .Busy: DoEvents: Loop
    End With

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Compilare form web da excel

Postdi calculon » 14/10/11 23:16

woooow risolto!
Stiamo facendo passi da gigante!

Ora l'ultimo problema: il form che devo compilare sta all'interno di una pag. web alla quale è necessario autenticarsi.
Vorrei evitare di fare inserire alla macro il mio nome utente e la pass, perciò sarebbe molto ultile riuscire ad agganciare una pagina già aperta.

Si può fare?
calculon
Utente Senior
 
Post: 161
Iscritto il: 07/01/11 15:08

Re: Compilare form web da excel

Postdi Anthony47 » 14/10/11 23:55

Stiamo facendo passi da gigante!
Bravo! :D :D

Per la nuova domanda: dichiara l' oggetto IE Pubblico a livello di Modulo; poi con una prima macro attivi l' applicazione InternetExplorer con l' url del login.
Fai il login manualmente
Con una seconda macro continui con la compilazione dei campi.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Compilare form web da excel

Postdi calculon » 15/10/11 08:08

Se faccio così nn riesco. Suggerimenti?


Option Explicit
Dim appIE As Object
Dim sURL As String
Dim btnInput As Object
Dim ElementCol As Object
Dim Link As Object

Sub Vai()

Set appIE = CreateObject("InternetExplorer.Application")

sURL = "http:/www.hotmail.com"

With appIE
.Navigate sURL
.Visible = True
End With

Do While appIE.Busy
DoEvents
Loop


Do While appIE.Busy
DoEvents
Loop


End Sub

Sub go(cognome As String, nome As String)



appIE.Document.getElementsByname("cognome")(0).Value = Range("a1")
appIE.Document.getElementsByname("nome")(0).Value = Range("b1")


Set ElementCol = appIE.Document.getElementsByTagName("input")

For Each btnInput In ElementCol
If btnInput.Value = "Ricerca" Then
btnInput.Click
Exit For
End If
Next btnInput

End Sub
calculon
Utente Senior
 
Post: 161
Iscritto il: 07/01/11 15:08

Re: Compilare form web da excel

Postdi Anthony47 » 15/10/11 20:56

Perdona, se non mi dici che cosa vorresti fare e, per aiutarmi, mi passi una macro che "non riesce a fare quella cosa" allora a me vien da fare la faccia del "ghisa" davanti a Toto' e Peppino che chiedono "Per andare dove dobbiamo andare, per dove dobbiamo andare?"

Intanto, per portarmi avanti, ti chiedo anche di chiarire chi richiama la Sub go, e a che cosa dovrebbero servire i parametri cognome e nome passati durante la call.

Ciao, ti aspettiamo
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Compilare form web da excel

Postdi calculon » 15/10/11 22:17

Ho cercato di fare (male) quello che mi suggerivi tu:
a) attivare IE sulla pagina del login
b) fare il login manuale
c) creare una seconda macro che, una volta autenticato, compili i campi di un web form di mio interesse (vd. nome e cognome nella sub "go")

Comunque, dal tuo ultimo messaggio mi pare di capire che dovrebbe essere "vai" a richiamare "go", giusto?
Se sì, mi aiuti a capire come?

Graziieeeeeee
calculon
Utente Senior
 
Post: 161
Iscritto il: 07/01/11 15:08

Re: Compilare form web da excel

Postdi calculon » 16/10/11 09:29

un'altra soluzione che potrebbe aiutarmi è quella di fare il normale accesso e poi ordinare l'apertura di un link con un codice tipo questo:
Set ElementCol = appIE.Document.getElementsByTagName("a")

For Each Link In ElementCol
If Link.innerHTML = "??????" Then
Link.Click
Exit For
End If
Next Link


richiamando ilcodice html <A href

sto faacendo molta confusione?
calculon
Utente Senior
 
Post: 161
Iscritto il: 07/01/11 15:08

Re: Compilare form web da excel

Postdi Anthony47 » 16/10/11 14:37

Ho cercato di fare (male) quello che mi suggerivi tu:
a) attivare IE sulla pagina del login
b) fare il login manuale
c) creare una seconda macro che, una volta autenticato, compili i campi di un web form di mio interesse (vd. nome e cognome nella sub "go")

Ok, io vedo la prima macro, con cui apri la pagina hotmail.com; poi non so che ci fai (non uso hotmail) e successivamente non fai niente di visibile: la Sub go e' una macro che si puo' solo invocare da altra macro, non la puoi far partire altrimenti. In piu' ci sono parametri aventi label cognome e nome, ma anche stringhe pari a "cognome" e "nome"; ma non sapendo dove sei andato (con il login manuale) e che cosa dovresti fare non so valutare se si tratta di una infelice omonimia (e' un po' autolesionistico dichiarare delle variabili con nomi di valori stringhe che poi utilizzi) o di un involontario errore (le stringhe dovrebbero essere invece le variabili, cioe' le virgolette sono lì per errore).
Inoltre non capisco perche', avendoti presentato un paio di soluzioni semplici che lavorano (gogle search, login facebook), che usano l' oggetto Document di InternetExplorer hai preferito metterti a lavorare su soluzioni certamente piu' sofisticate, ma che immagino debbano essere l' evoluzione in meglio di una soluzione rozza ma funzionante.

Quindi il mio suggerimento e', dopo aver aperto la sessione appIE, di cercare nel sorgente della pagina in cui sei posizionato il nome degli oggetti da compilare, compilarli e gestirli con le modalita' poco sofisticate che ho usato negli esempi google search e facebook login.
Una volta che hai fatto funzionare cio' allora puoi renderli piu' sofisticati collegandoti ad altre librerie (io mi limito a usare Microsoft InternetExplorer in late binding, non mi interessa la MS html object library), usandone i relativi oggetti, metodi e proprieta'.

L' ipotesi di attivare un link per compilare una form non la vedo attinente al quesito in discussione.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Compilare form web da excel

Postdi calculon » 16/10/11 22:46

La verità è che ancora non sono riuscito ad avviare la macro su una pagina X aperta in seguito ad autenticazione manuale. Infatti con il codice che ho riportato prima mi si chiede sempre e cmq di fare il login (anche se in realtà esiste già una pagina autenticata e aperta)!

Ufff. Mi puoi consigliare qualche lettura ssull'argomento in modo da chiarirmi le idee per poi magari riportare qua sul forum il problema in maniera comprensibile?


Grazie mille
calculon
Utente Senior
 
Post: 161
Iscritto il: 07/01/11 15:08

Re: Compilare form web da excel

Postdi calculon » 16/10/11 22:48

Per quanto riguarda la soluzione da te definita "rozza" (in realtà è efficacissima) purtroppo per il compito che devo svolgere non può essere adottata poiché l'indirizzo non è semplice come nell'esempio di Wiki e google.
Ri uff
calculon
Utente Senior
 
Post: 161
Iscritto il: 07/01/11 15:08

Re: Compilare form web da excel

Postdi Anthony47 » 17/10/11 11:20

L' esempio Wiki non guardarlo, semmai quello facebook.

Cerca di fare una sola macro dove inserisci sia l' automazione per il login che quella successiva; eseguila step-by-step con F8 e controlla se funziona.
Solo dopo spezzerai quella macro in due, e dalla prima eliminerai le righe che fanno login automatico. Tieni presente che la validita' di una variabile condivisa non e' dalla mattina alla sera, l' help on line puo' chiarire meglio e suggerire magari l' uso di Public invece di Dim.

Nel frattempo potresti pubblicare il sorgente della pagina web su cui ti trovi dopo aver fatto il login, facendo attenzione che non contenga informazioni riservate ma evitando di modificare il sorgente in modo sostanziale; ad esempio potresti sostituire ogni lettera che vuoi mascherare con Z, evitando assolutamente di alterare la sintassi.
Metto le mani avanti: trattandosi pero' di conoscenza a cavallo tra la programmazione web e visual basic non e' detto che io sia in grado di decodificarla.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Compilare form web da excel

Postdi calculon » 17/10/11 16:55

Benissimo. Per ora sono riuscito a superare anche questo ostacolo.

Ora un altro problema, magari stupido, che blocca l'esecuzione della mia macro:

appIE.Document.getElementsByname("data_presentazione")(0).Value = Cells(1, 5)

questo codice preleva dalla e1 un valore data, invertendo però giorno e mese. Esiste un modo per evitare che ciò accada?
calculon
Utente Senior
 
Post: 161
Iscritto il: 07/01/11 15:08

Re: Compilare form web da excel

Postdi calculon » 17/10/11 18:49

Altro problema: come si può attivare un radio button html con vba?

grazieee
calculon
Utente Senior
 
Post: 161
Iscritto il: 07/01/11 15:08

Re: Compilare form web da excel

Postdi Anthony47 » 19/10/11 01:39

Sulla falsariga dei suggerimenti che finora ho dato, cerchi il nome del radiobutton e poi provi a metterene il valore a 1 o 0.

Per quanto riguarda il discorso della data, invece di scrivere " = Cells(1, 5)" prova con
Codice: Seleziona tutto
=Format(Cells(1, 5), "mm/dd/yyyy")   'o il formato che si aspetta quel campo


Qualcosa in piu' potrei provare a capire avendo il sorgente html della pagina, ma per i test servirebbe l' accesso alla pagina; insomma sono suggerimenti alla cieca.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Compilare form web da excel":


Chi c’è in linea

Visitano il forum: Nessuno e 50 ospiti