Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

EXCEL Query 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

EXCEL Query web

Postdi Francesco53 » 22/11/10 16:41

Un saluto a tutto il Forum,
utilizzo per scaricare dei dati una queryweb, la mia difficoltà è questa:
la pagina da cui devo scaricare i dati, aumenta di una unità, e sono costretto ogni volta a cambiare il num progressivo nella macro. Se nella cella T18 ho l'ultimo numero di pagina prelevato, vi è la possibilità utilizzando
la cella T19 che è uguale alla cella T18+1 di far aggiornare in automatico il prelievo dei nuovi dati?
Allego la macro il link per riservatezza non è quello reale, ma la macro si, il valore 636 è quello che aumenta
ad ogni emissione di nuovi dati.
Sub Aggiornadati()
Sheets("Inserimento dati").Select
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://www.francesco.it/estra.asp?dati=6&pagina=636", Destination:=Range("A1") _
)
.Name = "dati"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "3"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
Ringrazio chi può aiutarmi,
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Sponsor
 

Re: EXCEL Query web

Postdi ricky53 » 22/11/10 17:13

Caio,
prova in questo modo

Codice: Seleziona tutto
"URL;http://www.francesco.it/estra.asp?dati=6&pagina=" & T19,  ......



Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: EXCEL Query web

Postdi Francesco53 » 22/11/10 17:38

Ciao Ricky ti ringrazio ma purtroppo non va bene in quanto qualsiasi sia il valore in T19,
mi restituisce sempre l'ultima pagina di dati.
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Re: EXCEL Query web

Postdi ricky53 » 22/11/10 18:00

Caio,
strano perchè io utilizzo proprio questo metodo.

Dipenderà da qualche parametro della query.
Controlla.

Ti invio un esempio estratto dal mio lavoro sul GP di F1 del 2010 di qualche mese fa che trovi in questo forum.

Codice: Seleziona tutto
Sub Crea_Query()
    Num_Pagina = 835
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.formula1.com/results/season/2010/" & Num_Pagina, Destination:=Range( _
        "A1"))
        .Name = Num_Pagina
        .Refresh BackgroundQuery:=False
    End With
End Sub

Sub Nuova_Pagina_Stessa_Query()
    Num_Pagina = 836 '837 '838
    With [A2].QueryTable
       .Connection = "URL;http://www.formula1.com/results/season/2010/" & Num_Pagina
        .Destination = Range("A2")
        .Refresh BackgroundQuery:=False
    End With
End Sub


Prova e ...

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: EXCEL Query web

Postdi Francesco53 » 22/11/10 18:19

Ciao Ricky, modificato macro con l'aggiunta della dichiarazione
Num_Pagina = Range("T19").Value
e adesso funziona.
Grazie mille
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Re: EXCEL Query web

Postdi ricky53 » 22/11/10 18:23

Bene.
alla prossima.

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: EXCEL Query web

Postdi Francesco53 » 23/11/10 09:28

Buon giorno Ricky, scusa se approfitto delle tue capacità, domanda:
se volessi inserire un ciclo in modo che la macro scarichi più pagine
ed inserendo eventualmente una verifica tipo
If Num_Pagina = Num_Pagina2 then End Sub
Si può realizzare?
Grazie
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Re: EXCEL Query web

Postdi Flash30005 » 23/11/10 10:13

Crei un ciclo For next per il numero di pagina come in questo esempio

Codice: Seleziona tutto
Sub Crea_Query()
For Num_Pagina = 835 To 840
    'Num_Pagina = 835
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.formula1.com/results/season/2010/" & Num_Pagina, Destination:=Range( _
        "A1"))
        .Name = Num_Pagina
        .Refresh BackgroundQuery:=False
    End With
Next Num_Pagina
End Sub


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: EXCEL Query web

Postdi ricky53 » 23/11/10 12:23

Ciao,
se la query è stata già creata (mediante la macro "Crea_Query") per avere il ciclo devi utilizare la macro "Nuova_Pagina_Stessa_Query" e mettere, nel ciclo For/Next un "IF" sul numero per il quale vuoi uscire

Codice: Seleziona tutto
Sub Nuova_Pagina_Stessa_Query()
Num_Pagina2= 837
For Num_Pagina = 835 to 840
    If Num_pagina = Num_Pagina2 then Exit Sub
    With [A2].QueryTable
       .Connection = "URL;http://www.formula1.com/results/season/2010/" & Num_Pagina
        .Destination = Range("A2")
        .Refresh BackgroundQuery:=False
    End With
Next Num_Pagina
End Sub


Prova e ...
Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: EXCEL Query web

Postdi Flash30005 » 23/11/10 15:40

Ha fatto bene Ricky a inserire il controllo per uscire nel caso fosse raggiunto quel determinato numero di pagina
(mi era sfuggita questa particolare richiesta di Francesco53).

Nel ricontrollare la mia macro ho notato che accoda sullo stesso foglio le varie query-web e pensavo...

se fosse più utile avere una query-web per foglio e, nel caso dell'esistenza del foglio compilato da una precedente attivazione della macro, lo "saltasse" per aggiungere nuovi fogli con i dati del web
Quindi, pubblico una macro che fa ottenere quanto detto
l'utilità sarà solo per coloro che hanno questa esigenza (anche se i dati si riferiscono alla richiesta di Francesco53).

Codice: Seleziona tutto
Sub Crea_QueryFogliDiversi2()
INI = 835
Fine = 842
Ferma = 838
For Num_Pagina = INI To Fine
If Num_Pagina = Ferma Then Exit Sub  '<<<<< commentare se non occorre (inserirei, magari, l'uscita in caso di errore per superamento delle pagine web disponibili)
    For Each Ws In Worksheets
        If Sheets.Count = 1 Then
           Ws.Name = INI
        Else
            If Val(Ws.Name) = Num_Pagina Then GoTo SaltaNumP
        End If
    Next Ws
    If Num_Pagina <> INI Then
        Sheets.Add.Name = Num_Pagina
       FFP = Trim(Num_Pagina - 1)
       FFA = Trim(Num_Pagina)
        Sheets(FFA).Move After:=Sheets(FFP)
    End If
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.formula1.com/results/season/2010/" & Num_Pagina, Destination:=Range( _
        "A1"))
        .Name = Num_Pagina
        .Refresh BackgroundQuery:=False
    End With
SaltaNumP:
Next Num_Pagina
End Sub


L'unico avvertimento, per il primo avvio, è avere un solo foglio nella cartella di excel,
il foglio potrà avere qualsiasi nome di default (foglio1, foglio2 o foglio3) in quanto sarà rinominato con il primo numero dellla prima pagina web

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: EXCEL Query web

Postdi Francesco53 » 23/11/10 16:41

Ringrazio entrambi per la vs disponibilità e capacità.
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45


Torna a Applicazioni Office Windows


Topic correlati a "EXCEL Query web":


Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti