Condividi:        

Estrarre Dati in Automatico

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

Estrarre Dati in Automatico

Postdi claudia80 » 04/04/15 08:30

Buongiorno a tutti, avevo bisogno di sapere se si potevano estrarre dati da un sito internet in automatico, in pratica in dei siti trovo dei dati che mi servono e sono in tabella a quanto pare, perchè con un semplice copia ed incolla in excel me li ritrovo precisi precisi sul foglio, così da li posso poi inserire dei filtri e gestrirmi i dati a mio piacimento, ma esiste una macro, un software che lo faccia in automatico? tipo con un tasto "aggiorna" mi ripete questo copia incolla ogni volta che voglio ?

Vi Ringrazia Anticipatamente e vi auguro Buona Giornata
claudia80
Utente Junior
 
Post: 23
Iscritto il: 01/04/15 11:52

Sponsor
 

Re: Etrarre Dati in Automatico

Postdi turbonet » 04/04/15 14:27

ciao,
certo che si puo....
vai nel menu dati....
poi clicca su carica dati esterni....
poi nuova query web...
inserisci l'indirizzo della pagina web, selezionare tabella e confermare sul pulsante ok....
questo con excel 2003, con le versione successive non lo ricordo, comunque il procedimento e lo stesso.
saluti e buona pasqua.....
turbonet
Utente Junior
 
Post: 16
Iscritto il: 01/04/15 21:24

Re: Estrarre Dati in Automatico

Postdi claudia80 » 04/04/15 21:42

Grazie Turbonet, ho appena letto il messaggio, provero a fare come mi hai detto, per il momento Auguri e buona pasqua anche a Te
claudia80
Utente Junior
 
Post: 23
Iscritto il: 01/04/15 11:52

Re: Estrarre Dati in Automatico

Postdi claudia80 » 13/04/15 16:29

Salve a tutti, avevo aperto questo Topic, come potete leggere mi serve di estrarre dei dati da un sito o più siti web, il tutto che poi posso aggiornarlo in automatico. In pratica sono Tabelle ed ognuna di esse dovrebbe andare in un foglio Excel,tra varie ricerche e guide sono riuscita a fare questo :

Menu ---> Dati--->Da Web ---> inserire il link nel Browser di Excel che si Apre ---> selezionare con Freccia Gialla la Tabella da importare ---> Cliccare Import
Tutto questo a mano tabella per tabella, poi con il tasto "Aggiorna tutti" mi dovrebbe aggiornare le pagine.

Purtroppo sono andata a provare a fare aggiorna tutti, mi da questo errore
"No estrazione label torneo: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1"

Uno dei siti che mi interessa di più è questo : http://www.statistichesulcalcio.com/mai ... o_117.html
le tabelle sono le prime tre (le varie Classifiche) ed ognuna andrebbe in un foglio diverso.
Il Sito in questione è molto fornito di statistiche è veramente fatto bene, ma il mio intendo è mettere tutto su un mio file excel e crearci poi delle macro, formule o query che mi possono tirare fuori dei dati velocemente.

Vi Ringrazio Anticipatamente
claudia80
Utente Junior
 
Post: 23
Iscritto il: 01/04/15 11:52

Re: Estrarre Dati in Automatico

Postdi enrico43 » 13/04/15 18:36

Il suggerimento di turbonet importa le tabelle e te le mette dove vuoi tu ed in più nelle proprietà intervallo dati puoi scegliere l'aggiornamento: automatico, all'apertura del file od ogni tot minuti.
Una volta che hai importato la/e tabelle (dal menù clicca Dati-Importa Dati Esterni-Nuova Query Web) ti apre la tua pagina di default. Metti in alto l'indirizzo che vuoi tu e clicca su Vai. Aspetta un po che ti apra la nuova pagina e da li scegli la/e tabella/e da importare. Ti chiederà dove vuoi metterla (questo foglio/nuovo foglio) e scegli tu dove metterla. Hai detto una per ogni Foglio. Quando ha finito di importarle ariclicca su Dati-Importa Dati Esterni-Proprietà Intervallo Dati e li puoi ticckare a tuo piacimento gli aggiornamenti e la formattazione.
Prova e sappici dire. Intanto provo con il link inviato, anche se per gli aggiornamenti si dovrà aspettare domenica prossima.
Ciao
enrico43
Utente Senior
 
Post: 208
Iscritto il: 13/09/14 15:33
Località: Fiumicino

Re: Estrarre Dati in Automatico

Postdi claudia80 » 13/04/15 18:49

Grazie Enrico sempre presente nei miei post a suggerirmi, diciamo che in parte ho fatto quello che mi diceva turbonet, ma la cosa strana che facendo aggiorna, diciamo che si aggiornava, anche se con gli stessi dati perchè se non variano non possiamo vedere l'aggiornamento, ma fatto strano come dicevo nel post precedente, ad un certo punto dopo un po di tempo, non funzionava più la query e mi dava quell'errore, ora non so se ho probemi io con Excel, se la fonte ha qualche protezione a tempo, non saprei come spiegarmelo. Si saresti gentile semmai a fare una prova con la pagina che ti ho dato e testarlo per un po.
claudia80
Utente Junior
 
Post: 23
Iscritto il: 01/04/15 11:52

Re: Estrarre Dati in Automatico

Postdi Anthony47 » 13/04/15 20:35

Si tratta di sito che crea il suo sorgente in modo dinamico, e le webquery (per ammissione di Microsoft) non sono idonee.
Prova a importare tutte le tabelle del sito in un foglio e poi copi quel che ti interessa nei fogli che vuoi, seguendo le inicazioni date ad esempio qui: viewtopic.php?p=582572#p582586

Nel tuo caso imposterai, seguendo quanto hai scritto in un messaggio precedente:
Codice: Seleziona tutto
myURL = "http://www.statistichesulcalcio.com/mainstats/italia/Serie-A_71/anno_117.html "


Una discussione simile e' quest'altra, appena rivitalizzata da mmrrcc:
viewtopic.php?f=26&t=100441
(ma in questo caso si importa solo la tabella N° 5)

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

Re: Estrarre Dati in Automatico

Postdi claudia80 » 17/04/15 11:07

Buongiorno a Tutti, Grazie Anthony delle tue risposte, vedo che sei ferratissimo e questo mi fa buon credere che prima o poi riuscirò nel mio intendo ;-)
Ho fatto delle prove ma mi da un impaginazione non in tabelle e tutta sparpagliata e forse non mi estrae tutti i dati, mi sembra che le tre tabelle Classifica non le importa
claudia80
Utente Junior
 
Post: 23
Iscritto il: 01/04/15 11:52

Re: Estrarre Dati in Automatico

Postdi Anthony47 » 17/04/15 12:02

La pagina contiene 47 strutture di tabelle; molte sono di una sola riga, ma una decina comprendono le 20 squadre del campionato (io le ritrovo tra roga 100 e riga 300).
Le tabelle sono tutte importate, ma la macro non fa nessun tentativo di formattare le informazioni, quindi la visione potrebbe non essere visivamente appagante.
Per prima cosa formatta tutto il foglio per eliminare (sul tab Allineamento) il Testo-a-capo, poi lavora per estrarre le tabelle e i dati di tuo interesse.
Se vuoi l' evidenza delle tabelle modifica il codice come segue:
Codice: Seleziona tutto
        Next trtr       'ESISTENTE
    I = I + 2           'Modificata
    Cells(I, "A").Value = "TABELLA_" & KK: KK = KK + 1     'AGGIUNTA
    Next myItm          'ESISTENTE


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

Re: Estrarre Dati in Automatico

Postdi claudia80 » 17/04/15 13:19

Ciao Anthony ho fatto quando mi dicevi, non è cambiato nulla o quasi, le tabelle che interessano a me nemmeno l'ombra, per esempio le tabelle in basso quelle "calci d'angolo,ammonizioni, espulsioni" anche se solo testo e non formato HTML me le riporta, il resto no, chissà dove sto sbagliando, tu l'hai provata è va bene?
claudia80
Utente Junior
 
Post: 23
Iscritto il: 01/04/15 11:52

Re: Estrarre Dati in Automatico

Postdi Anthony47 » 17/04/15 14:56

Ma non sono e tabelle 33 e successive?
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Estrarre Dati in Automatico

Postdi claudia80 » 17/04/15 17:26

Anthony a me non servono le statistiche, ma le classifiche, quella generale, quella primo tempo e quella secondo tempo, qualsiasi sito mi fa esportare questo, poi posso creare intorno ad esse qualsiasi query per tirarmi fuori tutti i dati velocemente, questo è il mio intendo, semmai ci fosse qualche altra parte dove attingere sono disposta a cambiare, non mi interessa il sito da me citato.

Ancora Grazie per la tua pazienza
claudia80
Utente Junior
 
Post: 23
Iscritto il: 01/04/15 11:52

Re: Estrarre Dati in Automatico

Postdi Anthony47 » 18/04/15 02:36

Oh mamma... In tutto quel baillame di tabelle non avevo visto che mancavano proprio le principali.
In effetti quelle sono messe in 3 "iframe", che devono essere gestiti separatamente come se fossero 3 altri documenti.
La "penultima versione" della macro e' questa:
Codice: Seleziona tutto
Sub GetWebTab2()
Dim IE As Object, F As Long
Dim myRColl, myDColl, KK As Long, I As Long, J As Long, myColl, myR, myTD
'
myURL = "http://www.statistichesulcalcio.com/mainstats/italia/Serie-A_71/anno_117.html"     '<<<<
Set IE = CreateObject("InternetExplorer.Application")
'
With IE
    .navigate myURL
    .Visible = True
    Do While .Busy: DoEvents: Loop              'Attesa not busy
    Do While .readyState <> 4: DoEvents: Loop   'Attesa documento
End With
'
myStart = Timer                                 'attesa addizionale
Do
    DoEvents
    If Timer > myStart + 2 Or Timer < myStart Then Exit Do
Loop

'Leggi le tabelle su foglio5 (su un nuovo foglio)
'Worksheets.Add                                              '<<<<<1  -Nuovo foglio
Application.Goto (Sheets("Foglio2").Range("A1"))            '<<<<<2  -Foglio esistente
Cells.Clear
Set myColl = IE.Document.getElementsbyTagName("TABLE")
For Each myItm In myColl
    Cells(I + 1, "A").Value = "TABELLA_" & KK: KK = KK + 1: I = I + 1
    For Each trtr In myItm.Rows
        For Each tdtd In trtr.Cells
            Cells(I + 1, J + 1) = tdtd.innertext
            J = J + 1
        Next tdtd
        I = I + 1: J = 0
    Next trtr
I = I + 2
Next myItm
'Legge le tabelle dentro gli iframe:
Set myColl = IE.Document.getElementsbyTagName("iframe")
For F = 0 To myColl.Length - 1
If Left(myColl(F).ID, 7) = "myframe" Then
Set my2coll = myColl(F).contentDocument.getElementsbyTagName("table")
    For Each myItm In my2coll
    Cells(I + 1, "A").Value = "TABELLA_" & KK: KK = KK + 1: I = I + 1
        Set myRColl = myItm.getElementsbyTagName("tr")
        For Each myR In myRColl
            Set myDColl = myR.getElementsbyTagName("td")
            For Each myTD In myDColl
                Cells(I + 1, J + 1) = myTD.innertext
                J = J + 1
            Next myTD
            I = I + 1: J = 0
        Next myR
    I = I + 2
    Next myItm
End If
Next F
'
    Cells.WrapText = False
    Range("A1").Select
'
'Stop     'Vedi testo
'
'Chiusura IE
IE.Quit
Set IE = Nothing
End Sub
Essa importa tutto su Foglio2, che sara' AZZERATO SENZA PREAVVISO all' avvio della macro; l' impostazione puo' essere variata modificando l' istruzione marcata <<<<2

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

Re: Estrarre Dati in Automatico

Postdi claudia80 » 21/04/15 12:14

Ciao Anthony appena letto il tuo messaggio, sono stata fuori e sono rientrata ieri, ok allora dopo provo questa macro e ti farò sapere ;-)
Ancora Grazie
claudia80
Utente Junior
 
Post: 23
Iscritto il: 01/04/15 11:52

Re: Estrarre Dati in Automatico

Postdi claudia80 » 21/04/15 13:26

Ciao Anthony non so dove sbaglio, ma purtroppo mi da errore di run-time 9,
cosa intendi quando dici "La "penultima versione" della macro e' questa"
non devo usare quella che mi hai postato? o indendi che devo aggiungerla a qualcosa?
claudia80
Utente Junior
 
Post: 23
Iscritto il: 01/04/15 11:52

Re: Estrarre Dati in Automatico

Postdi Anthony47 » 21/04/15 19:53

Tu hai mai visto "l' ultima versione di un progetto"?
Comunque dovresti dire su quale riga di codice ti segnala l' errore (premi Debug al momento dell' errore, e comunicaci l' istruzione evidenziata in giallo: la copi e la includi nel prossimo messaggio).

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

Re: Estrarre Dati in Automatico

Postdi claudia80 » 22/04/15 16:57

Grazie Anthony, ho eseguito istruzioni, fino a quando non mi dava l'errore, mi è comparso su questa riga
Application.Goto (Sheets("Foglio2").Range("A1")) '<<<<<2 -Foglio esistente
Cells.Clear
claudia80
Utente Junior
 
Post: 23
Iscritto il: 01/04/15 11:52

Re: Estrarre Dati in Automatico

Postdi Anthony47 » 23/04/15 00:46

Grazie Anthony, ho eseguito istruzioni, fino a quando non mi dava l'errore, mi è comparso su questa riga
Application.Goto (Sheets("Foglio2").Range("A1")) '<<<<<2 -Foglio esistente
Cells.Clear
Ma la riga di codice evidenziata era la prima o la seconda riportata? Nel tuo file, un foglio che si chiama Foglio2 esiste? Quandi dici "ho eseguito istruzioni, fino a quando non mi dava l'errore" vuoi dire che non a ogni esecuzione di macro hai l' errore o che cosa?
Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Estrarre Dati da Web in Automatico

Postdi enrico43 » 06/05/15 21:21

Buonasera, rispolvero questo topic, che prima non mi interessava più di tanto, perchè proprio ieri invece ho dovuto misurarmi con un problema simile. Riportare tabelle dal sito della società su excel per poi manipolarlne i valori. Ho scopiazzato dalla soluzione di Anthony, smucinato in internet, sbattuto la testa molte volte, ma alla fine ci sono riuscito. La soluzione è un po da newbie e si basa essenzialmente nell'aver isolato le varie tabelle richiamate poi con singole macro, come richiesto dalla società, perciò niente query nè aggiornamenti (i file devono essere usati da newbie al cubo). Ricordatomi di questo topic, ho applicato la soluzione trovata e ne è uscito quanto allegato. Posto perchè ci "sarebbe" bisogno di qualche perfezionamento, peraltro menzionato nelle note che si trovano sul foglio1, sempre se claudia non ha già risolto e se ancora ci legge e se ancora è interessata.
Un saluto a tutto il forum
Enrico
http://www.filedropper.com/importaretabelle
enrico43
Utente Senior
 
Post: 208
Iscritto il: 13/09/14 15:33
Località: Fiumicino

Re: Estrarre Dati in Automatico

Postdi Anthony47 » 07/05/15 01:35

Le tue macro continuano a creare sessioni di IE che non si vedono perche' le tieni nascoste con .Visible = False; ma col TaskManager si vedono bene. Quando si arriva a 100 non si vince pero' nessuna bambolina...
Suggerisco di inserire IE.Quit a conclusione e di impostare .Visible = True cosi' l' utente sa che cosa succede sul suo pc.
Quanto alla formattazione, penso che basti, all' interno della Sub Formattazione sostituire Sheets("Foglio2").Select con Sheets(3).Select, Sheets("Foglio3").Select con Sheets(2).Select e ' Sheets("Foglio4").Select con Sheets(1).Select

Lavorando in late binding non hai bisogno di impostare i riferimenti alle due librerie.

Sono in disaccordo con l' uso indiscriminato di On Error Resume Next, nasconde troppe cose che in genere dovrebbero essere visibili; a spanne il tuo codice non dovrebbe mai andare in errore in modo prevedibile, quindi quel comando andrebbe eliminato e basta.

Non ho capito perche' hai inserito piu' Sub GetAllTables(doc As Object): ci sono differenze tra le tre versioni (cos'e', il quesito della Susy??)

Nella mia implementazione davo per scontato che una cosa fosse l' estrazione dei dati e un' altra la presentazione, quindi non avevo inserito nessuna formattazione, ma penso che claudia80 apprezzera' il tuo approccio.

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

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Estrarre Dati in Automatico":


Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti