Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[VBA EXCEL]-COMPILAZIONE FORM WEB

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

[VBA EXCEL]-COMPILAZIONE FORM WEB

Postdi Gigi_ » 22/09/14 08:48

Ciao a tutti!!
Sto cercando compilare un form web prelevando i dati da un foglio di excel (uso il 2003 su XP in questo caso).
Codice: Seleziona tutto
Set IeApp = CreateObject("internetexplorer.Application")
iURL = "url"
With IeApp
        .Visible = True
        For rigo= 2 To 2750
        .Navigate "url"
        Do Until .ReadyState = 4: DoEvents: Loop
        .Document.All.Item("name").Value = Range("A" & rigo).Value
        .Document.All.Item("surName").Value = Range("b" & rigo).Value
        .Document.All.Item("provincia").Value = Range("c" & rigo).Value

La macro funziona, inserisce i dati, ma l'inserimento del valore "provincia" non mi rende disponibili i comuni della successiva, collegata, casella di input del comune.
Questo è il codice della pagina web relativo al campo provincia.
Codice: Seleziona tutto
<select name="provincia" onchange="getComuneList(this,'listCommune','/B2CWeb')" onblur="validateField(this)" id="idProvincia" style="width:125px;"><option value="" selected="selected">Scegli la provincia</option><option value="AG">AGRIGENTO</option>
<option value="AL">ALESSANDRIA</option>
<option value="AN">ANCONA</option>
......etc.

Ad ogni buon conto.....
BUONA GIORNATA A TUTTI!
Gigi_
Gigi_
win 7 + office 2003
Avatar utente
Gigi_
Utente Senior
 
Post: 340
Iscritto il: 14/11/09 21:51

Sponsor
 

Re: [VBA EXCEL]-COMPILAZIONE FORM WEB

Postdi Anthony47 » 22/09/14 16:40

Questi lavori prevedono l'analisi del sorgente, uno spezzone purtroppo dice poco o niente; quindi dovresti pubblicare l' url su cui bisogna lavorare.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [VBA EXCEL]-COMPILAZIONE FORM WEB

Postdi Gigi_ » 25/09/14 05:18

Già.... https://www.lefrecce.it/B2CWeb/crm2Regi ... nInputView
Grazie per l'interessamento Anthony47.
Ciao
Gigi_
win 7 + office 2003
Avatar utente
Gigi_
Utente Senior
 
Post: 340
Iscritto il: 14/11/09 21:51

Re: [VBA EXCEL]-COMPILAZIONE FORM WEB

Postdi Zer0Kelvin » 25/09/14 17:09

Ciao.
Se (come sembra) tutti i campi di input possono essere attivati tramite sequenze di tasti, un'alternatia interessante potrebbe essere inviare i dati al browser tramite application.sendkeys.
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 303
Iscritto il: 08/04/12 11:23

Re: [VBA EXCEL]-COMPILAZIONE FORM WEB

Postdi Zer0Kelvin » 25/09/14 17:48

Per esempio:
Codice: Seleziona tutto
Sub ieTest()
Shell "C:\Program Files\Internet Explorer\iexplore.exe https://www.lefrecce.it/B2CWeb/crm2Registration.do?parameter=registrationInputView", vbNormalFocus
Application.Wait (Now + TimeValue("0:00:5")) 'attende che la pagina venga caricata
Application.SendKeys vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & _
    vbTab & vbTab & vbTab & vbTab & vbTab & "pippo" & vbTab & "pluto" & vbTab & "ITALIA" & vbTab & _
    "CATANZARO"
Application.Wait (Now + TimeValue("0:00:1")) 'in questo punto c'è l'esecuzione di uno script, quindi bisogna aspettare che termini
'è possibileche sia questo script a provocare l'inconveniente lamentato
Application.SendKeys vbTab & "CENADI"
'eccetera...
End Sub
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 303
Iscritto il: 08/04/12 11:23

Re: [VBA EXCEL]-COMPILAZIONE FORM WEB

Postdi Zer0Kelvin » 25/09/14 17:57

PS: potresti anche provare ad inserire un'attesa nel tuo codice, dopo aver impostato il valore "Provincia", chissà?
Codice: Seleziona tutto
.Document.All.Item("provincia").Value = Range("c" & rigo).Value
Application.Wait (Now + TimeValue("0:00:1"))
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 303
Iscritto il: 08/04/12 11:23

Re: [VBA EXCEL]-COMPILAZIONE FORM WEB

Postdi Gigi_ » 25/09/14 20:15

Ciao Zer0Kelvin,
grazie per l'aiuto.
Purtroppo non posso testare la tua soluzione per alcuni giorni.
Ma sono curioso di sapere da te se è efficace.
Grazie.
Gigi_
win 7 + office 2003
Avatar utente
Gigi_
Utente Senior
 
Post: 340
Iscritto il: 14/11/09 21:51

Re: [VBA EXCEL]-COMPILAZIONE FORM WEB

Postdi Zer0Kelvin » 25/09/14 22:34

Beh! il primo codice che ho scritto funziona, ma potrebbe non essere molto pratico da usare e per renderlo fruibile andrebbe sicuramente rivisto.
Comunque è possibile che la mia seconda ipotesi sia realistica; quando si inserisce il nome della provincia, la pagina per pochi attimi non risponde perchè impegnata nel recupero dell'elenco dei comuni, ma l'esecuzione della macro và avanti lo stesso. Quindi, inserendo un'attesa nel codice della tua macro, dopo aver impostato la provincia, potresti risolvere.
Lo stesso accade quando inserisci la provincia del domicilio, penso.
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 303
Iscritto il: 08/04/12 11:23

Re: [VBA EXCEL]-COMPILAZIONE FORM WEB

Postdi Zer0Kelvin » 25/09/14 22:51

PS: probabilmente si possono usare le proprietà ReadyState o Busy per creare l'attesa.
I punti critici dove inserire le pause sarebbero i due inserimenti di provincia (la pagina recupera l'elenco dei comuni) e , probabilmente, l'inserimento del comune di domicilio (recupero del cap)
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 303
Iscritto il: 08/04/12 11:23

Re: [VBA EXCEL]-COMPILAZIONE FORM WEB

Postdi Anthony47 » 25/09/14 23:26

Hummm...
Effettivamente lo script di "onchange" di quel controllo non parte se il contenuto viene cambiato via vba... Pero' puo' essere attivato...
Tra i tanti modi il piu' chiaro mi sembra questo:
Codice: Seleziona tutto
        .Document.forms("form1").Item("provincia").Value = Range("c" & rigo).Value
        .Document.forms("form1").Item("provincia").fireEvent ("onchange")

Tuttavia lo status di IExplorer rimane su Busy=Falso e ReadyState=4 (DocumentComplete), per cui se devi intervenire sempre da vba sul campo successivo sara' necessario inserire una wait alla cieca di alcuni secondi dopo l' avvio della fireEvent. Poiche' l' elenco rimane per circa un secondo impostato sul contenuto della precedente provincia per poi immediatamente passare sul nuovo e' possibile utilizzare una logica appena piu' sofisticata, corrispondente al seguente codice:
Codice: Seleziona tutto
Dim myComuni As Object, mySelect As Object, myTim As Single, Coll0 As Long
'
.Document.forms("form1").Item("provincia").Value = Range("c" & rigo).Value
.Document.forms("form1").Item("provincia").fireEvent ("onchange")
'Attesa per la disponibilita' dell' elenco Comuni:
Set myComuni = ie.Document.getElementByid("idComune")
Set mySelect = myComuni.getElementsByTagName("option")
myTim = Timer
Coll0 = mySelect.Length
reSel:
If mySelect.Length = Coll0 And Timer < (myTim + 4) Then GoTo reSel

La riga Dim puo' essere posizionata in testa, insieme alle altre definizioni di variabili.
Devo precisare che questa sequenza potrebbe andare in crisi se eseguita allo scadere della mezzanotte, e se si modifica da una provincia ad un' altra che ha lo stesso numero di comuni; ma credo che questa situazione in pratica non si possa avverare, e quindi evito di inserire la condizione "Or Timer < myTim" nella If.

Non perdere i due messaggi di Zer0K prima di questo.

Ciao a tutti
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [VBA EXCEL]-COMPILAZIONE FORM WEB

Postdi Gigi_ » 26/09/14 07:53

Anthony47 ha scritto:Non perdere i due messaggi di Zer0K prima di questo.

.....fossi matto!
Fremo dalla voglia di testare le soluzioni.
Nel frattempo. ...
GRAZIE MILLE!
Avatar utente
Gigi_
Utente Senior
 
Post: 340
Iscritto il: 14/11/09 21:51

Re: [VBA EXCEL]-COMPILAZIONE FORM WEB

Postdi Gigi_ » 18/11/14 20:02

Fra un po' potrò (finalmente!) testare le soluzioni.
Vi faccio sapere.
Nel frattempo rinnovo il ringraziamento e Vi saluto.
Ciao.
Gigi_
win 7 + office 2003
Avatar utente
Gigi_
Utente Senior
 
Post: 340
Iscritto il: 14/11/09 21:51


Torna a Applicazioni Office Windows


Topic correlati a "[VBA EXCEL]-COMPILAZIONE FORM WEB":


Chi c’è in linea

Visitano il forum: Nessuno e 22 ospiti