Condividi:        

Query web da http://www.oddsfair.net/en/

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

Query web da http://www.oddsfair.net/en/

Postdi apocrimata75 » 28/05/12 19:27

Vi pongo un quesito: dovrei scaricare dati, su foglio excel 2010, dal sito http://www.oddsfair.net/en/

Per la prima pagina non ci sono problemi, purtroppo quelle successive si presentano così: http://www.oddsfair.net/en/index.php?date=2012-05-25&order=1x2desc&offset=20

dove giornalmente cambia la parte in grassetto (la data).

Come posso fare?
Windows 7 - Office 2010
apocrimata75
Utente Senior
 
Post: 189
Iscritto il: 28/05/11 13:22

Sponsor
 

Re: Query web da http://www.oddsfair.net/en/

Postdi Anthony47 » 29/05/12 23:30

In questo caso, partendo dalla query gia' impostata sul tuo foglio di lavoro, devi variarne la "Connessione"; ad esempio usando questo macro:
Codice: Seleziona tutto
Sub newwq()
'
myDate = "2012-05-31"     '<<< Data in formato STRINGA
myConn = "URL;http://www.oddsfair.net/en/index.php?date=" _
          & myDate & "&order=1x2desc&offset=20"

    Range("A3").Select       '<<< Una cella della tua query
    With Selection.QueryTable
        .Connection = myConn
        .Refresh BackgroundQuery:=False
    End With
End Sub

Nella macro ho previsto che la data sia scritta nel codice (riga marcata <<<); ovviamente puo' essere prelevata da una cella excel e formattato nel formato yyyy-mm-gg, oppure caricato tramite un inputbox.

Fai sapere, ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Query web da http://www.oddsfair.net/en/

Postdi apocrimata75 » 30/05/12 08:17

Scarica i dati ma quelli del 31/05/2012.

Codice: Seleziona tutto
Sub newq()
'
Mydate = "2012-05-31"     '<<< Data in formato STRINGA
myConn = "URL;http://www.oddsfair.net/en/index.php?date=" _
          & Mydate & "&order=1x2desc&offset=20"

    Range("c64").Select       '<<< Una cella della tua query
    With Selection.QueryTable
        .Connection = myConn
        .Refresh BackgroundQuery:=False
    End With
End Sub


Volendo impostare nella cella AA1 la formula oggi() nel formato aaaa-mm-gg e fare in modo che la macro imposti questo come valore Mydate?
Windows 7 - Office 2010
apocrimata75
Utente Senior
 
Post: 189
Iscritto il: 28/05/11 13:22

Re: Query web da http://www.oddsfair.net/en/

Postdi Anthony47 » 30/05/12 23:02

Due commenti:
-effettivamente avevo interpretato male la richiesta, che non verte su come ottenere i dati dei giorni successivi ma le paginate successive alla prima
-comunque se nella macro come data ci scrivi 2012-05-31 poi non lamentarti che ti restituisce i dati del 31-maggio :D

Andando alla richiesta, immagino che tu desideri estrarre sul foglio tutte le informazioni disponibili sul sito per quella data. Io procederei cosi':
-inserisci sul tuo foglio 5 web query in successione, usando rispettivamente questi url
Codice: Seleziona tutto
http://www.oddsfair.net/en/index.php?date=2012-05-31&order=1x2desc&offset=0
http://www.oddsfair.net/en/index.php?date=2012-05-31&order=1x2desc&offset=20
http://www.oddsfair.net/en/index.php?date=2012-05-31&order=1x2desc&offset=40
http://www.oddsfair.net/en/index.php?date=2012-05-31&order=1x2desc&offset=60
http://www.oddsfair.net/en/index.php?date=2012-05-31&order=1x2desc&offset=80

-non farti impressionare se alcune di queste query non restituiranno dati validi
-appena completata la singola query, fai tasto dx sull' area dati, scegli Proprieta' intervallo dati; nella finestra Proprieta' cambia il "Nome" dal valore corrente a "Offset_0", "Offset_20", etc (a seconda dell' url usato)
-come destinazione imposta la prima cella libera sotto la query precedente

Hai detto che vorresti lavorare con la data inserita in AA1, quindi in AA1 o ci scrivi la data che vuoi (in formato data excel) oppure ci metti una formula che restituisce una data.

Poi userai una macro come questa che
-modifica la data di query come impostato in AA1 del foglio attivo
-fa il refresh dei dati dal sito
Codice: Seleziona tutto
Sub quall()
'http://www.pc-facile.com/forum/viewtopic.php?f=26&t=95656
'
myDate = Format(Range("AA1").Value, "yyyy-mm-dd")
'
For I = 0 To 60 Step 20
    myConn = "URL;http://www.oddsfair.net/en/index.php?date=" _
        & myDate & "&order=1x2desc&offset=" & I
    With ActiveSheet.QueryTables("Offset_" & I)
        .Connection = myConn
        .Refresh BackgroundQuery:=False
    End With
Next I
End Sub

Prova e fai sapere.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Query web da http://www.oddsfair.net/en/

Postdi apocrimata75 » 31/05/12 14:27

Sembra funzionare, lo testo meglio e ti faccio saper, cmq grazie per l'interesse ed il grande aiuto che mi hai dato.
Windows 7 - Office 2010
apocrimata75
Utente Senior
 
Post: 189
Iscritto il: 28/05/11 13:22

Re: Query web da http://www.oddsfair.net/en/

Postdi apocrimata75 » 01/06/12 15:05

si blocca su questa riga, errore run time 9, indice non incluso nell'elenco


Codice: Seleziona tutto
    With ActiveSheet.QueryTables("Offset_" & I)
Windows 7 - Office 2010
apocrimata75
Utente Senior
 
Post: 189
Iscritto il: 28/05/11 13:22

Re: Query web da http://www.oddsfair.net/en/

Postdi Anthony47 » 01/06/12 22:54

Hai fatto Copia /Incolla del mio codice o l' hai riscritto o modificato?
Se in excel premi F5, quali "Offset_xx" vedi?

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

Re: Query web da http://www.oddsfair.net/en/

Postdi apocrimata75 » 02/06/12 07:11

Offset_0
Offset_20
Offset_40
Offset_60
Windows 7 - Office 2010
apocrimata75
Utente Senior
 
Post: 189
Iscritto il: 28/05/11 13:22

Re: Query web da http://www.oddsfair.net/en/

Postdi Anthony47 » 02/06/12 13:40

Noto che ti avevo detto di creare 5 query web e di rinominarle come Offset_xx; ma tu mi hai elencato solo 4 Offset_xx. D' altra parte la mia macro, col suo For I = 0 To 60 Step 20, ne processa solo 4, quindi teoricamente la mancanza di un Offset_80 nel tuo foglio non dovrebbe causare errore anche se denota una errata attuazione delle sitruzioni.

Per prova aggiungi queste istruzioni subito dopo For I = 0 To 60 Step 20:
Codice: Seleziona tutto
For I = 0 To 60 Step 20  '<< Esistente
'AGGIUNGERE
aaa = ""
For Each WQ In ActiveSheet.QueryTables
aaa = aaa & WQ.Name & "--"
Next WQ
[V1] = aaa & I     '<<<< V1??
'FINE AGGIUNTE

Attenzione, la macro scrive in V1, quindi se V1 non e' libera nel tuo foglio modifica l' istruzione marcata <<<<; esegui poi la macro, e quando ti va in errore copia il contenuto di V1 (seleziona V1, seleziona il testo nella barra della formula, Contr-c) e incollalo nel prossimo messaggio.
Vorrei anche avere il testo della macro, compreso le aggiunte che ti ho chiesto sopra, da Sub XXX a End Sub compresi, e sapere che cosa e' successo tra il pomeriggio del 31-5 quando sembrava funzionare e il pomeriggio dell' 1-6 quando segnali l' errore run time 9.

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

Re: Query web da http://www.oddsfair.net/en/

Postdi apocrimata75 » 02/06/12 21:06

Codice: Seleziona tutto
Sub newq()
'
Mydate = Format(Range("AA1").Value, "yyyy-mm-dd")
'
For I = 0 To 60 Step 20
aaa = ""
For Each WQ In ActiveSheet.QueryTables
aaa = aaa & WQ.Name & "--"
Next WQ
[V1] = aaa & I     '
    myConn = "URL;http://www.oddsfair.net/en/index.php?date=" _
        & Mydate & "&order=1x2desc&offset=" & I
    With ActiveSheet.QueryTables("Offset_" & I)
        .Connection = myConn
        .Refresh BackgroundQuery:=False
    End With
Next I
End Sub



Cos'è successo non lo so, questo è il testo completo. Grazie x il tempo che mi stai dedicando.
Windows 7 - Office 2010
apocrimata75
Utente Senior
 
Post: 189
Iscritto il: 28/05/11 13:22

Re: Query web da http://www.oddsfair.net/en/

Postdi Anthony47 » 02/06/12 23:59

Ma la domanda principale era
"esegui poi la macro, e quando ti va in errore copia il contenuto di V1 (seleziona V1, seleziona il testo nella barra della formula, Contr-c) e incollalo nel prossimo messaggio"

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

Re: Query web da http://www.oddsfair.net/en/

Postdi apocrimata75 » 03/06/12 08:08

il contenuto di V1 é:
Offset_0--Offset_20--Offset_40--Offset_60
Windows 7 - Office 2010
apocrimata75
Utente Senior
 
Post: 189
Iscritto il: 28/05/11 13:22

Re: Query web da http://www.oddsfair.net/en/

Postdi Anthony47 » 03/06/12 12:09

il contenuto di V1 é:
Offset_0--Offset_20--Offset_40--Offset_60
Questa stringa non e' prodotta dalla Sub newq():
-manca "--" dopo Offset_60
-manca il valore di I dopo l' ultimo offset

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

Re: Query web da http://www.oddsfair.net/en/

Postdi apocrimata75 » 03/06/12 13:13

Offset_0--Offset_20--Offset_40--Offset_60


ho riprovato e dà questo risultato.

allego immagine

http://wikisend.com/download/689668/Immagine.gif
Windows 7 - Office 2010
apocrimata75
Utente Senior
 
Post: 189
Iscritto il: 28/05/11 13:22

Re: Query web da http://www.oddsfair.net/en/

Postdi apocrimata75 » 03/06/12 13:58

Noto che ti avevo detto di creare 5 query web e di rinominarle come Offset_xx; ma tu mi hai elencato solo 4 Offset_xx.


Non avevo creato le 5 query perkè essendo un sito di giocate non sempre ci sono 3,4,5 o + pagine da cui scaricare dati, anzi spesso ce ne sono 1 o 2. Pertanto ho dovuto aspettare il fine settimana per capire dove finiva la 2° pagina e impostare la cella dalla quale far partire la 3° ecc. ecc.
Windows 7 - Office 2010
apocrimata75
Utente Senior
 
Post: 189
Iscritto il: 28/05/11 13:22

Re: Query web da http://www.oddsfair.net/en/

Postdi apocrimata75 » 03/06/12 14:52

ho avviato la macro, in V1 c'è: Offset_20--Offset_40--Offset_60--Offset_0--60

Però adesso le macro automatiche non era in funzione.

Il messaggo di errore non è comparso.

Riprovo domani (ci saranno meno pagine da cui scaricare dati) e ti faccio sapere.
Windows 7 - Office 2010
apocrimata75
Utente Senior
 
Post: 189
Iscritto il: 28/05/11 13:22

Re: Query web da http://www.oddsfair.net/en/

Postdi apocrimata75 » 03/06/12 15:01

Spero non inizi ad offendermi via web, ma forse ho capito il problema.

La macro funziona (non c'erano dubbi).

Avevo creato il classico pulsante per la sua attivazione (pulsante controllo modulo), e siccome volevo farla partire da là mi restituiva il messaggio di errore. Invece in "visualizza", e poi "esegui" il msg non compariva e la macro funzionava (ecco , forse, perkè la prima volta funzionava e poi aveva smesso). C'è da aggiungere che il pulsante di cui sopra era in altro foglio e non in quello "dati".

Ci sarà una spiegazione ma vorrei capire qual'è.
Cmq :)
Windows 7 - Office 2010
apocrimata75
Utente Senior
 
Post: 189
Iscritto il: 28/05/11 13:22

Re: Query web da http://www.oddsfair.net/en/

Postdi Anthony47 » 03/06/12 15:24

La macro lavora sul foglio attivo al momento del suo lancio.
Secondo me e' possibile che il tuo file contenga query analoghe su piu' fogli che sono simili tra di loro quindi facili da confondere; se trovi quale e' il foglio giusto (quello su cui in origine avevi impostato le N query) potrebbe essere utile aggiungere in testa alla macro la selezione di quel foglio, cioe'
Codice: Seleziona tutto
Sub newq()
Sheets("IlFoglioGiusto").Select     '<<< AGGIUNGERE
Mydate = Format(Range("AA1").Value, "yyyy-mm-dd")

Se le query sono 5 (quindi crei anche la Offset_80), e' opportuno modificare il For /Next in For I = 0 To 80 Step 20.

Per quanto riguarda la posizione dove inserire le N query, esse vanno inserite "una dove finisce l' altra", perche' lo spazio per i dati della query si allunga e si accorcia a seconda di quante righe vengono scaricate, salvo impostazioni personalizzate (diverse dallo standard) tra le Proprieta' dell' intervallo dati, nell' area "Se il numero di righe nell' intervallo dati cambia dopo l' agiornamento..." (la scelta piu' opportuna e' quella di default: Inserisci celle per i nuovi dati e elimina le celle inutilizzate).

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

Re: Query web da http://www.oddsfair.net/en/

Postdi apocrimata75 » 03/06/12 15:45

La macro lavora sul foglio attivo al momento del suo lancio.


Purtroppo ignorantemente il pulsante era sul foglio 2 (attivo) e la macro sul foglio 1, forse x questo si bloccava e mi dava errore.
Windows 7 - Office 2010
apocrimata75
Utente Senior
 
Post: 189
Iscritto il: 28/05/11 13:22

Re: Query web da http://www.oddsfair.net/en/

Postdi mpsinf » 25/10/12 18:10

Anthony47 ha scritto:Due commenti:
-effettivamente avevo interpretato male la richiesta, che non verte su come ottenere i dati dei giorni successivi ma le paginate successive alla prima
-comunque se nella macro come data ci scrivi 2012-05-31 poi non lamentarti che ti restituisce i dati del 31-maggio :D

Andando alla richiesta, immagino che tu desideri estrarre sul foglio tutte le informazioni disponibili sul sito per quella data. Io procederei cosi':
-inserisci sul tuo foglio 5 web query in successione, usando rispettivamente questi url
Codice: Seleziona tutto
http://www.oddsfair.net/en/index.php?date=2012-05-31&order=1x2desc&offset=0
http://www.oddsfair.net/en/index.php?date=2012-05-31&order=1x2desc&offset=20
http://www.oddsfair.net/en/index.php?date=2012-05-31&order=1x2desc&offset=40
http://www.oddsfair.net/en/index.php?date=2012-05-31&order=1x2desc&offset=60
http://www.oddsfair.net/en/index.php?date=2012-05-31&order=1x2desc&offset=80

-non farti impressionare se alcune di queste query non restituiranno dati validi
-appena completata la singola query, fai tasto dx sull' area dati, scegli Proprieta' intervallo dati; nella finestra Proprieta' cambia il "Nome" dal valore corrente a "Offset_0", "Offset_20", etc (a seconda dell' url usato)
-come destinazione imposta la prima cella libera sotto la query precedente

Hai detto che vorresti lavorare con la data inserita in AA1, quindi in AA1 o ci scrivi la data che vuoi (in formato data excel) oppure ci metti una formula che restituisce una data.

Poi userai una macro come questa che
-modifica la data di query come impostato in AA1 del foglio attivo
-fa il refresh dei dati dal sito
Codice: Seleziona tutto
Sub quall()
'http://www.pc-facile.com/forum/viewtopic.php?f=26&t=95656
'
myDate = Format(Range("AA1").Value, "yyyy-mm-dd")
'
For I = 0 To 60 Step 20
    myConn = "URL;http://www.oddsfair.net/en/index.php?date=" _
        & myDate & "&order=1x2desc&offset=" & I
    With ActiveSheet.QueryTables("Offset_" & I)
        .Connection = myConn
        .Refresh BackgroundQuery:=False
    End With
Next I
End Sub

Prova e fai sapere.


Avendo un problema simile con la parte del link contenente la data della pagina da analizzare in formato 2012-10-24 poi 20212-10-23 ecc. senza dovermi creare una colonna con tutti i giorni "validi"
potrei crearmi dei cicli nidificati
For anno = 2012 to 2000 step -1
For mese = 12 to 1 step -1
For giorno = 31 to 1 step -1
in cui mydata = anno & "-" & mese & "-" & giorno
come posso fare per evitare giorni inesistenti e quindi non validi ? tipo 31.02.2012 ?
XP + Excel 2003 Ita
W7 + Excel 2007 Ita
mpsinf
Utente Senior
 
Post: 168
Iscritto il: 03/09/03 18:33

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Query web da http://www.oddsfair.net/en/":


Chi c’è in linea

Visitano il forum: Nessuno e 46 ospiti

cron