Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

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

Postdi Francesco53 » 06/11/11 16:47

Un saluto a tutti,
ho una difficoltà che non riesco a risolvere, pur avendo provato con diverse soluzioni non riesco a risolvere.
Devo scaricare dati da internet, le pagine sono diverse e per data, volendo ricercare dei dati anteriori alla
data del giorno, ho in una cella l'ultima data in archivio, per cui in un'altra cella faccio la verifica con la data
odierna e se differente, vado a ricercare le pagine dei giorni precedenti, ma non riesco a far funzionare a
dovere la macro. Allego parte del codice originale (con l'inserimento manuale nella macro della data) e la
variazione fatta per leggere la data in base al valore di una cella. Il nome del sito non è quello reale:
Originale:
Codice: Seleziona tutto
With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.lavoro.com/?area=Offerte&action=Archivio&date=2011-11-06" _
        , Destination:=Range("$A$1"))


Modifica1:
Codice: Seleziona tutto
gio = Worksheets("Appoggio").Range("AC7").Value
With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.lavoro.com/?area=Offerte&action=Archivio&date=" & gio _
        , Destination:=Range("$A$1"))


Modifica2:
Codice: Seleziona tutto
gio = Worksheets("Appoggio").Range("AC7").Value
With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.lavoro.com/?area=Offerte&action=Archivio&date=" & "gio" _
        , Destination:=Range("$A$1"))


Nelle due modifiche mi carica solo la pagina di base ma non i dati
Grazie
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Sponsor
 

Re: EXCEL e Query Web

Postdi Flash30005 » 06/11/11 20:56

Fai attenzione!
In una query web non c'è solo quell'indirizzo ma
anche una riga codice più in basso che determina la pagina di apertura

Controlla oppure posta la query web (per intero)
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 e Query Web

Postdi Francesco53 » 06/11/11 22:07

Ciao Flash,
ti posto la query per intero, la cella che dovrebbe contenere la data in formato persoanalizzato aaaa-mm-gg è la AC7.
Codice: Seleziona tutto
Sub Arch10Lotto()
On Error GoTo errore
Application.ScreenUpdating = False
Worksheets("Appoggio").Select
Range("A1").Select
gio = Worksheets("Appoggio").Range("AC7").Value

    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.lottologia.com/?area=10elotto5minuti&action=Archivio&date=2011-11-06" _
        , Destination:=Range("$A$1"))
        .Name = "archivio10elotto"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
errore:
    If Err <> 0 Then
       MsgBox Err.Number & " " & Err.Description, vbCritical
    End If
    Range("A1").Select
Application.ScreenUpdating = True


Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Re: EXCEL e Query Web

Postdi Flash30005 » 06/11/11 22:45

Prova questa

Codice: Seleziona tutto
Sub Macro1Test()

Dim Giorno As String
Dim DataE As Date
DataE = Range("AC1").Value
Giorno = Mid(DataE, 7, 4) & "-" & Mid(DataE, 4, 2) & "-" & Mid(DataE, 1, 2)
    Columns("A:V").Clear
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.lottologia.com/?area=10elotto5minuti&action=Archivio&date=" & Giorno _
        , Destination:=Range("A1"))
        .Name = "?area=10elotto5minuti&action=Archivio&date=" & Giorno & "_1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlAllTables
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
End Sub


Ciao

P.s. Quando crei una query-web evita di importare testate non necessarie selezionando con le apposite freccette solo le tabelle interessate e non tutta la pagina

N.B. A tal proposito (vedi P.s.) per la data ho utilizzato Ac1 invece che Ac7.


EDIT ore 23:00: Aggiungo che puoi ottenere la stessa cosa Giorno senza costruirlo con parti di strnga ma con la formattazione così
Codice: Seleziona tutto
Giorno = Format(Range("AC1").Value, "yyyy-mm-dd")
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 e Query Web

Postdi Francesco53 » 06/11/11 23:22

Ciao Flash,
grazie per la correzione, purtroppo non ho potuto prendere solo i dati perchè non mi evidenziava le crocette,
non sò il perchè, ma su certe pagine web non mi fà vedere le crocette.
Con stima
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Re: EXCEL e Query Web

Postdi Flash30005 » 07/11/11 00:44

Ma su quella da te inviata ci sono, infatti se esegui la queriweb con la macro ottieni i soli dati della tabella.

Posso chiederti quale browser di default usi?

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 e Query Web

Postdi Francesco53 » 07/11/11 09:17

Buongiorno Flash,
il browser è Firefox.
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Re: EXCEL e Query Web

Postdi Flash30005 » 07/11/11 09:52

Lo immaginavo!
Temo sia questo il motivo del non riuscire a selezionare parti di pagina web nella query :D

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 e Query Web

Postdi Francesco53 » 07/11/11 10:41

Grazie
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Re: EXCEL e Query Web

Postdi Francesco53 » 07/11/11 12:23

Ciao Flash,
scusa se ti pongo un'altro problema, ho provato con un ciclo for next inserito nella macro,
a recuperare i dati mancanti nell'archivio dalla data presente nella cella AC1 ad oggi, purtroppo
non riesco, fatte varie prove ma niente. Puoi per favore aiutarmi? può dipendere dal formato data?
Grazie
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Re: EXCEL e Query Web

Postdi Flash30005 » 07/11/11 12:37

?
Come un ciclo for next?
prima di un nuovo loop devi salvare i dati altrove, altrimenti verranno sovrascritti nella queryweb
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 e Query Web

Postdi Francesco53 » 07/11/11 14:27

Si Flash, ho previsto prima il salvataggio dei dati nel foglio Archivio, poi tramite il ciclo for next
e dopo aver ripulito il foglio Appoggio, vorrei recuperare i dati dei giorni successivi, per cui se
inserisco:

Dim Giorno As String
Dim DataE As Date
DataE = Range("AC1").Value
Giorno = Format(Range("AC1").Value, "yyyy-mm-dd")
Columns("A:V").Clear
For Giorni = Giorno to Day(Now)
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://www.lottologia.com/?area=10elotto5minuti&action=Archivio&date=" & Giorni _
, Destination:=Range("A1"))
...............................................
End With
Call CopiaDati
Next
End Sub

Non funziona.
Io vorrei poter recuperare le estrazioni dei giorni precedenti la data odierna, se non presenti in Archivio, per cui
nella Cella AC1 ho la data dell'ultimo aggiornamento presente in Archivio, pre cui se io aggiorno dopo due giorni,
dovrebbe caricare l'ultimo giorno in archivio (Cella AC1) e poi dopo aver salvato i dati, caricare i giorni successivi,
uno per volta per memorizzare tutti i giorni mancanti.
Se puoi dirmi dove sbaglio.
Grazie
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Re: EXCEL e Query Web

Postdi Flash30005 » 07/11/11 15:29

Ehm
senti facciamo una cosa...
Apri una nuova cartella di excel
Rinomina il foglio1 in "Internet"
il foglio2 in Archivio"
Inserisci questa macro in un modulo
Codice: Seleziona tutto
Sub Arch10LottoOk()
Set Ws1 = Worksheets("Internet")
Set Ws2 = Worksheets("Archivio")
UR2 = Ws2.Range("B" & Rows.Count).End(xlUp).Row
URA = Ws2.Range("A" & Rows.Count).End(xlUp).Row
For RR = URA To URA - 230 Step -1
If Mid(Ws2.Range("A" & RR), 3, 1) = "/" Then
URA = RR
GoTo SaltaE
End If
Next
SaltaE:

AA = Mid(Ws2.Range("A" & URA).Value, 1, 10)

Giorno = DateSerial(Mid(AA, 7, 4), Mid(AA, 4, 2), Mid(AA, 1, 2))

If UR2 < 2 Or Giorno = "" Then
    msg = "Digitare data inzio archivio" & vbCrLf
    msg = msg & "formato: gg/mm/aaaa"
    DataIni = InputBox(msg)
    Giorno = Format(DataIni, "yyyy-mm-dd")
    INI = 1
End If

Application.ScreenUpdating = False
Application.Calculation = xlManual
For Ciclo = Giorno To Date
    Agg = Format(Ciclo, "yyyy-mm-dd")

Ws1.Select
    Ws1.Columns("A:V").Clear
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.lottologia.com/?area=10elotto5minuti&action=Archivio&date=" & Agg _
        , Destination:=Range("A1"))
        .Name = "?area=10elotto5minuti&action=Archivio&date=" & Agg & "_1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlAllTables
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
    OraE = Ws1.Range("A4").Text
    Ws1.Range("A4").Value = DateSerial(Mid(Agg, 1, 4), Mid(Agg, 6, 2), Mid(Agg, 9, 2)) & " - " & OraE
    UR1 = Ws1.Range("B" & Rows.Count).End(xlUp).Row
    If INI = 1 Then
        Ws1.Range("A1:V" & UR1).Copy Destination:=Ws2.Range("A1")
        INI = 0
    Else
        Ws1.Range("A4:V" & UR1).Copy Destination:=Ws2.Range("A" & URA)
    End If
    Ws2.Range("AC1").Value = DateSerial(Mid(Agg, 1, 4), Mid(Agg, 6, 2), Mid(Agg, 9, 2))
'Ws2.Calculate
Next
Ws2.Select
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Avvia la macro...

La prima volta un messaggio (InpBox) chiederà la data di inizio archivio
puoi metterci qualsiasi data in formato gg/mm/aaaa
e attendi...
Nelle volte successive aggiungerà solo le estrazioni mancanti
Potrebbe sorgere solo un problema se l'aggiornamento non viene fatto a fine giornata estrazioni ma lo vediamo dopo (Corretta come da Edit)

ciao
Fai sapere

EDIT ore 16:00 Corretta macro per aggiornamenti parziali durante la giornata ;)
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 e Query Web

Postdi Francesco53 » 07/11/11 16:11

Ciao Flash,
ho fatto come hai detto e va bene, solo che se poi rifai l'aggiornamento, non aggiunge le estrazioni
successive, per far continuare i successivi aggiornamenti, la data in AC1, dovrebbe essere quella di
odierna, infatti se correggo questa:
Codice: Seleziona tutto
Giorno = Ws2.Range("AC1").Value ' + 1

continua ad aggiornare l'archivio con le estrazioni mancanti.
Il problema che si dovrebbe creare è quello del giorno dopo, ti spiego cosa intendo.
L'ultima estrazione avviene alle 00.00 e riprendono alle ore 05.05 del giorno seguente, ora la macro
dovrebbe il giorno successivo, all'ultimo salvataggio dei dati del foglio Excel (Esempio Ore 23.00), recuperare le estrazioni
mancanti del giorno prima, (avevo infatti previsto nella cella AC1 il valore max in Archivio) e poi andare
a prelevare le estrazioni già fatte del giorno corrente, qui pensavo con il Today() si potesse creare il
ciclo da Giorno in AV1 a Giorno odierno, per poi proseguire nel giorno corrente.
Grazie per la tua cortesia e disponibilità.
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Re: EXCEL e Query Web

Postdi Francesco53 » 07/11/11 16:19

Apportato correzione macro ore 16.00 è ok.
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Re: EXCEL e Query Web

Postdi Francesco53 » 07/11/11 16:37

Ciao Flash,
ho trovato il seguente problema, ogni volta che si aggiorna l'Archivio del giorno,
memorizza nuovamente tutte le estrazioni dalle Ore 05.05, creando dei doppioni
della stessa data e estrazioni.
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Re: EXCEL e Query Web

Postdi Flash30005 » 07/11/11 16:43

La prima macro (che ho sostituito direttamente nel post)
prevedeva il campo data ad ogni nuova estrazione perché mi ero reso conto che in un archivio di migliaia di righe, alla fine, si "perdeva l'orientamento", in pratica scorrendo tra le righe più in basso non si sapeva più il giorno dell'estrazione.
Quindi ho inserito la data alla prima riga (prima estrazione del giorno).
Questo particolare mi è stato utile, successivamente con la nuova macro, per poterlo utilizzare come "aggiornamento" dell'ultima estrazione che sia stata completata o no. ;)

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 e Query Web

Postdi Francesco53 » 07/11/11 16:46

Francesco53 ha scritto:Ciao Flash,
ho trovato il seguente problema, ogni volta che si aggiorna l'Archivio del giorno,
memorizza nuovamente tutte le estrazioni dalle Ore 05.05, creando dei doppioni
della stessa data e estrazioni.
Francesco


Scusa avevo sbagliato io avevo lanciato la prima macro, la seconda funziona bene
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Re: EXCEL e Query Web

Postdi Francesco53 » 07/11/11 17:29

La seconda macro se si parte con un archivio pulito va in errore in questa riga:

If Mid(Ws2.Range("A" & RR), 3, 1) = "/" Then

Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Re: EXCEL e Query Web

Postdi Francesco53 » 07/11/11 17:36

Francesco53 ha scritto:La seconda macro se si parte con un archivio pulito va in errore in questa riga:

If Mid(Ws2.Range("A" & RR), 3, 1) = "/" Then

Francesco


Ha bisogno in A1 di una data
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 e Query Web":


Chi c’è in linea

Visitano il forum: patel e 10 ospiti