Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

EXCEL WEB MULTIPLE PAGE TABLE QUERY

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

EXCEL WEB MULTIPLE PAGE TABLE QUERY

Postdi brik32544 » 26/10/13 17:19

Ho cercato a lungo e in largo per un forum che potesse aiutarmi...poi ho trovato VOI :)

Una richiesta simile alla mia è stata gia risolta qui, ma anche leggendo e rileggendo, il macro non funziona :(

Sarò sintetica

Voglio scaricare su excel delle tabelle dal web che sono su più pagine.


La PRIMA pagina è questa

http://accessoprogrammato.miur.it/2013/ ... id_ngrad=1

La SECONDA pagina è
http://accessoprogrammato.miur.it/2013/ ... E&pagina=2

Dove notate che cambia

id_ngrad=1&cdl=ME&pagina=2

Ci sono 691 pagine e quindi il 2 deve diventare 3, 4 ....691

Ogni pagina web ha 100 records e la macro che deve copiare in toto su un foglio excel


Ho letto questo stupendo post

viewtopic.php?t=88282

Il problema è simile. Ho provato a smanettare con quei macro ma non me lacavo.
Il fatto che quel sito (La borsa italiana) è drasticamente cambiato, non mi permette di fare dei test

Potete aiutarmi? :roll:

Grazie
brik32544
Newbie
 
Post: 5
Iscritto il: 26/10/13 16:03

Sponsor
 

Re: EXCEL WEB MULTIPLE PAGE TABLE QUERY

Postdi Flash30005 » 27/10/13 03:16

Ciao Brik32544 e benvenuta nel Forum

I link da te inviati sono corrotti, conducono ambedue alla stessa pagina (credo iniziale) e non alle pagine di cui fai riferimento
Un consiglio, quando inserisci un link di una pagina web devi inserirlo nel TagCode URL che trovi nell'editor
Ovvero avendo in memoria il link devi prima cliccare sul TagCode "URL" e incollare all'interno il link
Fuori da questo Tag potrai continuare la descrizione del tuo post.

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8483
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: EXCEL WEB MULTIPLE PAGE TABLE QUERY

Postdi brik32544 » 27/10/13 10:50

Hai ragione! Il link non funziona :(

Riprongo qui la parte centarle del post

La PRIMA pagina è questa

http://accessoprogrammato.miur.it/2013/page.php?pag=TA&cdl=ME&id_ngrad=1

La SECONDA pagina è
http://accessoprogrammato.miur.it/2013/page.php?pag=TA&id_ngrad=1&cdl=ME&pagina=2

Dove notate che cambia

id_ngrad=1&cdl=ME&pagina=2

La terza pagina


http://accessoprogrammato.miur.it/2013/page.php?pag=TA&id_ngrad=1&cdl=ME&pagina=3
ahah..adesso ci ho preso gusto a usare queste parentesi URL :)

Ci sono 691 pagine e quindi il 2 deve diventare 3, 4 ....691

Ogni pagina web ha 100 records e la macro che deve copiare in toto su un foglio excel


Ho letto questo stupendo post
http://www.pc-facile.com/forum/viewtopic.php?t=88282

Il problema è simile. Ho provato a smanettare con quei macro ma non me lacavo.
Il fatto che quel sito (La borsa italiana) è drasticamente cambiato, non mi permette di fare dei test

Attendo le vostre perle di saggezza... :oops:
brik32544
Newbie
 
Post: 5
Iscritto il: 26/10/13 16:03

Re: EXCEL WEB MULTIPLE PAGE TABLE QUERY

Postdi Anthony47 » 27/10/13 20:49

Allora, partendo da UN FILE NUOVO, su Foglio1 crea una web query che "peschi" dall' indirizzo
Codice: Seleziona tutto
http://accessoprogrammato.miur.it/2013/page.php?pag=TA&id_ngrad=1&cdl=ME&pagina=1

Seleziona la tabella con i dati che ti interessano e importa i dati a partire da A1.
Accertati che non sia impostato "Aggiorna ogni N minuti" (tasto dx su A1, scegli Proprieta' intervallo dati; controlla che l' impostazione non sia spuntata).

Apri l' editor delle macro con Alt-F11; Menu /Inserisci /Modulo; copia questa macro nel frame vuoto di dx:
Codice: Seleziona tutto
Sub getTables()
Dim Dest As String, myRoot As String, I As Long, myRan As Range

Dest = "Foglio3"        '<< Il foglio dove sara' creato l' elenco
aaa = Selection.CurrentRegion.Address

myRoot = "URL;http://accessoprogrammato.miur.it/2013/page.php?pag=TA&id_ngrad=1&cdl=ME&pagina="
With Range("A1").QueryTable
    For I = 1 To 1000
        .Connection = myRoot & I
        .Refresh BackgroundQuery:=False
        Set myRan = Range(Range("A3"), Range("G3").End(xlDown))
        myRan.Copy Destination:=Sheets(Dest).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
        If myRan.Rows.Count < 100 Then Exit For
        DoEvents
    Next I
End With
'
End Sub

Torna su excel, seleziona il foglio con la web query, lancia la macro e aspetta.
Ma tu, quale versione di Excel usi??

Il motivo per cui chiedo di partire da un nuovo file e' perche' voglio essere sicuro che sul file ci sia solo la web query che ti ho detto di creare.

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: 14879
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: EXCEL WEB MULTIPLE PAGE TABLE QUERY

Postdi brik32544 » 27/10/13 23:20

Io non so come ringraziarti :oops:

Poche righe e funziona benissimo!

Mi ha scaricato 60000 records in qualche minuto!!! e senza errori!!! :!:

Dopo, pensando di potermela cavare sono andata su un'altra pagina dello stesso sito. la prima pagina è

https://accessoprogrammato.cineca.it/2013/studenti/graduatoria.php?&statica=1&pagina=1&user=STU26MP34463

mentre la seconda è

https://accessoprogrammato.cineca.it/2013/studenti/graduatoria.php?&statica=1&pagina=2&user=STU26MP34463

Quindi, il cambio numero pagina non è alla fine del URL.

Ho inserito questo nel tuo macro e ho cercato di modificare
Codice: Seleziona tutto
    .Connection = myRoot & I

in modo da mettere il "counter nel mezzo del URL. Penso che hai capito..Non ha funzionato :oops:

Mi puoi dire come cambiare il counter per renderlo funzionante? Anche qui ci sono 100 records per pagina.
Siccome è un accesso con un login, se vuoi ti posso mandare i codici di accesso.

Io uso Excel 2007 versione inglese (ho cambiato il nome dei fogli da Sheet a foglio 1 ecc

Di nuovo grazie per il grande aiuto
brik32544
Newbie
 
Post: 5
Iscritto il: 26/10/13 16:03

Re: EXCEL WEB MULTIPLE PAGE TABLE QUERY

Postdi Anthony47 » 27/10/13 23:33

Fai direttamente
Codice: Seleziona tutto
.Connection = "URL;https://accessoprogrammato.cineca.it/2013/studenti/graduatoria.php?&statica=1&pagina=" & I & "&user=STU26MP34463"

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: 14879
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: EXCEL WEB MULTIPLE PAGE TABLE QUERY

Postdi brik32544 » 29/10/13 10:00

Anthony...... G R A Z I E !!!!!!

Deve essere bello avere questa destrezza con il codice VB

io ho un libro per " esperti " si chiama "VB for Dummies" :lol: :lol:

Parla di VB 4 , ma che versione è VBA in Excel?
Di nuovo GRAZIE Anthony... ;)
brik32544
Newbie
 
Post: 5
Iscritto il: 26/10/13 16:03

Re: EXCEL WEB MULTIPLE PAGE TABLE QUERY

Postdi Anthony47 » 29/10/13 23:48

Ricorda che VB (Visual Basic) e VBA (Visual Basic for Applications, quello disponibile in Excel) sono prodotti diversi; molti concetti sono analoghi, ma i dettagli sono diversi e ti aiutera' la consultazione dell' help on line, una vera miniera di informazioni ed esempi.
Le versioni attuali di vba sono 6 oppure 7.

Ciao, alla prossima
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: 14879
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: EXCEL WEB MULTIPLE PAGE TABLE QUERY

Postdi matty97 » 08/10/16 11:24

Ciao a tutti, ho letto e riletto questo tread ma non ne vengo fuori, ogni volta che copio i dati mi sovrascrive io dati contenuti dalla cella A1 a quella A101, come posso risolvere?
Questo è il codice
Codice: Seleziona tutto
    Sub getTables()
    Dim Dest As String, I As Long, myRan As Range

    Dest = "Sheet1"        '<< Il foglio dove sara' creato l' elenco
    aaa = Selection.CurrentRegion.Address

    With Range("A1").QueryTable
        For I = 1 To 3
            .Connection = "URL;https://accessoprogrammato.cineca.it/2016/studenti/graduatoria.php?&statica=1&pagina=" & I & "&user=STU19MP80148"
            .Refresh BackgroundQuery:=False
            Set myRan = Range(Range("A1"), Range("E1").End(xlDown))
            myRan.Copy Destination:=Sheets(Dest).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
            If myRan.Rows.Count < 90 Then Exit For
            DoEvents
        Next I
    End With
    '
    End Sub

Scusatemi se non mi sono espresso bene
matty97
Newbie
 
Post: 6
Iscritto il: 08/10/16 11:18

Re: EXCEL WEB MULTIPLE PAGE TABLE QUERY

Postdi Anthony47 » 08/10/16 23:46

Ciao matty97, benvenuto nel forum.
Immagino che stai dicendo che sul foglio Sheets1 i dati non vengono accodati ma i secondi si sovrappongono ai primi; per risolvere il problema avrei pero' bisogno di sapere che aspetto hanno i dati che importi dal sito; potrebbe bastare uno screenshot, purche' si vedano gli indirizzi (Riga / Colonna) compilati dalla query.
Per le istruzioni su come creare e allegare una immagine:
viewtopic.php?f=26&t=103893&p=605488#p605488

Ti aspettiamo...
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: 14879
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: EXCEL WEB MULTIPLE PAGE TABLE QUERY

Postdi matty97 » 09/10/16 20:02

Innanzitutto ti ringrazio per aver risposto, ora cerco di spiegare cosa ho fatto per aiutarti a capire e ovviamente allegerò le immagini. Per prima cosa apro un nuovo foglio e poi vado a importare dati dal web, scelgo la mia tabella e fin quà tutto ok,Parte iniziale della tabella Immagine e questa è la parte finale della tabella Immagine (Cancello i nomi per motivi di privacy), ora quando vado a crearmi una macro con il seguente codice
Codice: Seleziona tutto
Sub getTables()
    Dim Dest As String, I As Long, myRan As Range

    Dest = "Sheet1"        '<< Il foglio dove sara' creato l' elenco
    aaa = Selection.CurrentRegion.Address

    With Range("A1").QueryTable
        For I = 1 To 3
            .Connection = "URL;https://accessoprogrammato.cineca.it/2016/studenti/graduatoria.php?&statica=1&pagina=" & I & "&user=STU19MP80148"
            .Refresh BackgroundQuery:=False
            Set myRan = Range(Range("A1"), Range("E1").End(xlDown))
            myRan.Copy Destination:=Sheets(Dest).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
            If myRan.Rows.Count < 90 Then Exit For
            DoEvents
        Next I
    End With
    '
    End Sub
e poi la avvio succede questa cosa: Schermata 1 https://postimg.org/image/bb9rv831p/ Schermata 2https://postimg.org/image/9d7nn9v4h/ Schermata 3https://postimg.org/image/ng8gwdggb/ Schermata 4https://postimg.org/image/ivq23e2yb/Schermata 5 https://postimg.org/image/5cngg8av5/ Schermata 6https://postimg.org/image/li89z3epx/ Schermata 7
https://postimg.org/image/cui12l859/ Schermata 8 https://postimg.org/image/lrca8gn0j/ Schermata 9https://postimg.org/image/gjbwe3r2h/ scusa mi sono reso solo alla fine che dovevo utilizzare il collegamento diretto per forum, spero funzioni lo stesso, grazie mille
matty97
Newbie
 
Post: 6
Iscritto il: 08/10/16 11:18

Re: EXCEL WEB MULTIPLE PAGE TABLE QUERY

Postdi matty97 » 09/10/16 22:53

matty97 ha scritto:Innanzitutto ti ringrazio per aver risposto, ora cerco di spiegare cosa ho fatto per aiutarti a capire e ovviamente allegerò le immagini. Per prima cosa apro un nuovo foglio e poi vado a importare dati dal web, scelgo la mia tabella e fin quà tutto ok,Parte iniziale della tabella https://postimg.org/image/bqpjqhp9x/ e questa è la parte finale della tabella Immagine (Cancello i nomi per motivi di privacy), ora quando vado a crearmi una macro con il seguente codice
Codice: Seleziona tutto
Sub getTables()
    Dim Dest As String, I As Long, myRan As Range

    Dest = "Sheet1"        '<< Il foglio dove sara' creato l' elenco
    aaa = Selection.CurrentRegion.Address

    With Range("A1").QueryTable
        For I = 1 To 3
            .Connection = "URL;https://accessoprogrammato.cineca.it/2016/studenti/graduatoria.php?&statica=1&pagina=" & I & "&user=STU19MP80148"
            .Refresh BackgroundQuery:=False
            Set myRan = Range(Range("A1"), Range("E1").End(xlDown))
            myRan.Copy Destination:=Sheets(Dest).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
            If myRan.Rows.Count < 90 Then Exit For
            DoEvents
        Next I
    End With
    '
    End Sub
e poi la avvio succede questa cosa: Schermata 1 https://postimg.org/image/bb9rv831p/ Schermata 2https://postimg.org/image/9d7nn9v4h/ Schermata 3https://postimg.org/image/ng8gwdggb/ Schermata 4https://postimg.org/image/ivq23e2yb/Schermata 5 https://postimg.org/image/5cngg8av5/ Schermata 6https://postimg.org/image/li89z3epx/ Schermata 7
https://postimg.org/image/cui12l859/ Schermata 8 https://postimg.org/image/lrca8gn0j/ Schermata 9https://postimg.org/image/gjbwe3r2h/ scusa mi sono reso solo alla fine che dovevo utilizzare il collegamento diretto per forum, spero funzioni lo stesso, grazie mille
matty97
Newbie
 
Post: 6
Iscritto il: 08/10/16 11:18

Re: EXCEL WEB MULTIPLE PAGE TABLE QUERY

Postdi matty97 » 09/10/16 22:56

Scusa ho sbagliato a postare 2 volte il post, vorrei cancellare il post delle 09/10/16 19:02 , sai dirmi come si fa?
Aggiungo che nel post dove ho citato il post precendente è quello giusto
matty97
Newbie
 
Post: 6
Iscritto il: 08/10/16 11:18

Re: EXCEL WEB MULTIPLE PAGE TABLE QUERY

Postdi Anthony47 » 10/10/16 01:50

Dalle immagini io vedo che il risultato di una nuova pagina viene accodato al risultato gia' presente sul foglio; cosa c'e' di sbagliato?

Il messaggio superfluo lo cancellero' successivamente, adesso non vorrei eliminare materiale utile alla discussione.

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: 14879
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: EXCEL WEB MULTIPLE PAGE TABLE QUERY

Postdi matty97 » 10/10/16 22:55

Prima cosa il ciclo for dovrebbe fare massimo 3 cicli, quindi arrivare fino alla cella 300 mentre qua ha riempito fino alla 808 e quindi è sballato, poi nelle prime 100 celle dovrebbero esserci le posizioni che vanno fino a 100 mentre qua le sovrascrive con le posizioni che vanno dalla 201 in poi, nel complesso io uso il for da 3 cicli solo per comodità a controllare se andasse tutto dovrebbe riempirmi 300 celle e non 808, e non capisco perchè all'inizio sovrascrivce le prime 100 caselle ad ogni ciclo for e poi succesivamente dalla casella 101 in poi inizia a riempire in questo modo: (questi numeri indicano la posizione in graduatoria) 1 fino alla 100 poi dalla 101 fino alla 200 dopo riinizia dal 1 fino al 100 poi salta direttamente alla 201 e va fino alla 300 e poi riinizia dal 1 e va fino al 100 e poi arriva fino al 200 e dopo riinizia dal 1 e arriva fino al 100 e si ferma, mentre in realta dovrebbe andare dalla posizione 1 fino alla 300 e stop. Come mai fa sta cosa?
Se apri le foto che ho allegato e guardi la posizione in graduatoria con il numero di celle puoi capire meglio invece di tutto sto casino che ho fatto a parole.
il problema è che dovrebbe in base a quanto imposto il numero di cicli stampare tot posizioni, invece qua anche se metto massimo 3 cicli e quindi dovrebbe arrivare alla pagina 3 e quindi stampare 300 posizioni e fermarrsi questo ne stampa 808.
Credo che ci sia un errore nel copiare le celle e nel range, visto che il ciclo for l'ho controllato e lo rispetta e pure l' incrementatore I rispetta il valore, gli ho controlatti con il debug, è questo che mi fa sospettare di queste due istruzioni di cui non ho capito bene il cosa fanno
Codice: Seleziona tutto
Set myRan = Range(Range("A1"), Range("E1").End(xlDown))                                          myRan.Copy Destination:=Sheets(Dest).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
matty97
Newbie
 
Post: 6
Iscritto il: 08/10/16 11:18

Re: EXCEL WEB MULTIPLE PAGE TABLE QUERY

Postdi Anthony47 » 11/10/16 01:47

Capisco, ma io non so quante volte hai lanciato la procedura; ne' so che cosa c'era in Sheet1 quando l'hai lanciata la prima volta, ne' quante volte e' stata interrotta...
Facciamo cosi':
-cancella tutto quello che c'e' ora scritto in Sheet1
-poi aggiungi l'istruzione Stop in questa posizione:
Codice: Seleziona tutto
            DoEvents
            Stop            '<<< QUI
        Next I

In questo modo a ogni query che si conclude la macro si ferma su Stop e tu puoi controllare quante informazioni sono presenti nel foglio dove e' inserita la Query (in particolare su quale riga finisce la colonna E), e se queste stesse informazioni sono stete trasferite correttamente su foglio Sheet1.

Poi riseleziona il foglio con la Query, vai sulla macro e premi il tasto F5 per procedere con il secondo ciclo, e poi col terzo e ultimo.
Vediamo se cosi' si scopre qualcosa di utile.

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: 14879
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: EXCEL WEB MULTIPLE PAGE TABLE QUERY

Postdi matty97 » 11/10/16 15:59

Ho messo lo stop e ho visto che comunque nel copiare si incasinava da solo, ho rimediato spostando la destinazione del foglio invece che 'sheet1' ho messo 'sheet2' lasciando comunque che copiasse i dati dal 'sheet1', grazie di tutto!
matty97
Newbie
 
Post: 6
Iscritto il: 08/10/16 11:18

Re: EXCEL WEB MULTIPLE PAGE TABLE QUERY

Postdi Anthony47 » 11/10/16 22:53

Beh, le istruzioni lo lasciavano intuire che il foglio della web query e quello dove volevi accumulare i risultati dovevano essere diversi... importante e' aver risolto.

Alla prossima!
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: 14879
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: EXCEL WEB MULTIPLE PAGE TABLE QUERY

Postdi calogero.p » 08/10/17 08:09

Buon giorno a voi.
Premetto che è la prima volta che mi iscrivo ad un forum quindi chiedo scusa in anticipo se il mio modo di inserire informazioni o eventuali immagini di riferimento è incorretto (un po di pazienza!!!).
Vado subito al dunque. Devo recuperare degli indirizzi scolastici disposti su più pagine (e sono tanti!).
Non capendo assolutamente nulla di VB e VBA ho cercato di seguire questa discussione e vedere se riuscivo anch'io a raggiungere l'obbiettivo (troppo ottimista :) )
A titolo d'esempio vi inserisco l'URL delle prime tre pagine:
http://cercalatuascuola.istruzione.it/cercalatuascuola/ricerca/risultati?page=0&codiceRegione=&codiceOrdine=&checkStatale=S&radioBiennioTriennio=Biennio&denominazione=&codMecc=&tipoRicerca=AVANZATA&idform=result-453463

http://cercalatuascuola.istruzione.it/cercalatuascuola/ricerca/risultati?page=1&codiceRegione=&codiceOrdine=&checkStatale=S&radioBiennioTriennio=Biennio&denominazione=&codMecc=&tipoRicerca=AVANZATA&idform=result-453463

http://cercalatuascuola.istruzione.it/cercalatuascuola/ricerca/risultati?page=2&codiceRegione=&codiceOrdine=&checkStatale=S&radioBiennioTriennio=Biennio&denominazione=&codMecc=&tipoRicerca=AVANZATA&idform=result-453463

Sicuramente avete notato che il contatore delle pagine è dentro e non alla fine del codice URL.
Seguendo passo passo la procedura spiegata a "brik32544 » 27/10/13 23:20" ho provato ad usare questo codice:
Codice: Seleziona tutto
Sub getTables()
Dim Dest As String, myRoot As String, I As Long, myRan As Range

Dest = "Foglio3"        '<< Il foglio dove sara' creato l' elenco
aaa = Selection.CurrentRegion.Address

With Range("A1").QueryTable
    For I = 1 To 5000
        .Connection = "URL;http://cercalatuascuola.istruzione.it/cercalatuascuola/ricerca/risultati?page=" & I & "&codiceRegione=&codiceOrdine=&checkStatale=S&radioBiennioTriennio=Biennio&denominazione=&codMecc=&tipoRicerca=AVANZATA&idform=result-453463"
        .Refresh BackgroundQuery:=False
        Set myRan = Range(Range("A1"), Range("G1").End(xlDown))
        myRan.Copy Destination:=Sheets(Dest).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
        If myRan.Rows.Count < 100 Then Exit For
        DoEvents
    Next I
End With
'
End Sub

L'unico risultato che ottengo è una copia dei dati del foglio1 (ottenuti dalla Query) spostati in foglio3.
Spero di essere stato chiaro.
Potete aiutarmi?
GRAZIE in anticipo.
calogero.p
Newbie
 
Post: 2
Iscritto il: 08/10/17 07:38

Re: EXCEL WEB MULTIPLE PAGE TABLE QUERY

Postdi Anthony47 » 08/10/17 22:32

Visto che la struttura dati e' diversa da quella della discussione a cui fai riferimento, allora l'area da copiare dal foglio della Query al foglio di accumulo dei risultati deve essere calcolata con regole appropriate, e idem per l'identificazione dell'ultima pagina.
Il risultato dovrebbe essere questa macro:
Codice: Seleziona tutto
Sub getTables()
'versione http://www.pc-facile.com/forum/viewtopic.php?f=26&t=100356&p=639363#p639363
Dim Dest As String, myRoot As String, I As Long, myRan As Range
'
Dest = "Foglio2"        '<< Il foglio dove sara' creato l' elenco
With Range("A1").QueryTable
    For I = 1 To 5000
        .Connection = "URL;http://cercalatuascuola.istruzione.it/cercalatuascuola/ricerca/risultati?page=" & I & "&codiceRegione=&codiceOrdine=&checkStatale=S&radioBiennioTriennio=Biennio&denominazione=&codMecc=&tipoRicerca=AVANZATA&idform=result-453463"
        .Refresh BackgroundQuery:=False
        If Cells(Rows.Count, "B").End(xlUp) = Sheets(Dest).Cells(Rows.Count, "B").End(xlUp) Then Exit For
        Set myRan = Range(Cells(Rows.Count, "C").End(xlUp).Offset(0, -2), Range("E1").End(xlDown).Offset(1, 0))
        If myRan.Rows.Count <= 10 And myRan.Rows.Count > 0 Then
            myRan.Copy Destination:=Sheets(Dest).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
        Else
            Exit For
        End If
        DoEvents
        [J1] = I
        [K1] = Sheets(Dest).Cells(Rows.Count, 1).End(xlUp).Row
    Next I
Debug.Print I
End With
MsgBox ("Completato...")
'
End Sub

Quindi:
-crea un file con 2 fogli di lavoro
-sul primo (Foglio1) inserisci una webquery al primo url che hai indicato; fai in modo che l'area dati della query parta da A1
-il secondo foglio (Foglio2) sara' quello di accumulo; se il nome e' diverso da Foglio2 allora modifica la riga di codice marcata <<<

Inserisci la macro in un Modulo standard del vba, ad esempio Modulo1. Per questo, dopo aver creato il file:
-partendo da Excel premi Alt-F11 per aprire l'editor delle macro
-Menu /Inserisci /Modulo
-Copia il codice e incollalo nel frame dx del modulo appena creato
Personalizza la riga marcata <<< come gia' detto.

Poi torna su Excel, seleziona Foglio1 (quello con la query) e lancia la Sub getTables:
-premi Alt-F8
-seleziona getTables dall'elenco di macro disponibili
-premi Esegui

Ci vorra' il suo tempo, ma piano piano dovrebbe andare avanti; per consentirti di conoscere il progresso, in J1 e K1 saranno visualizzati "l'Indice" della pagina e l'ultima riga compilata sul foglio di accumulo. Non demoralizzarti... Comunque magari per prova usa un ciclo For I= 1 to 20, poi (se funziona) il lavoro grosso magari lo fai fare di notte.

Il foglio di accumulo non viene azzerato dalla macro; questo ti consentira', se necessario, di procedere per lotti; es un primo ciclo For I= 1 to 1000; poi un secondo For I=1001 to 2000, e cosi' via.
Se invece parti daccapo allora accertati che il foglio di destinazione sia vuoto all'inizio.

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: 14879
Iscritto il: 21/03/06 16:03
Località: Ivrea

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "EXCEL WEB MULTIPLE PAGE TABLE QUERY":


Chi c’è in linea

Visitano il forum: Nessuno e 20 ospiti