Condividi:        

Aggiornamento dati excel da 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

Aggiornamento dati excel da web

Postdi bobba10 » 15/10/07 15:00

Ciao, vorrei monitorare ogni minuto 8circa) l'andamento di un indice di borsa (FTSE) preso da un sito internet, per esempio http://uk.finance.yahoo.com/q?s=^FTSE e costruire un grafico temporale (valore dell'indice ad ogni minuto). Tutto questo vorrei farlo automaticamente senza dover cliccare un tasto ogni minuto.

Come posso fare?

Ho costruito un web query che si aggiorna ogni minuto, ma non so come creare la colonna con tutti i valori aggiornati, una specie di storicizzazione!

Grazie
marco
bobba10
Newbie
 
Post: 4
Iscritto il: 15/10/07 14:56

Sponsor
 

Postdi Anthony47 » 16/10/07 00:28

Ciao bobba10 e benvenuto nel forum
Io aggiungerei una macro che si ripete ogni N minuti, e che prende i dati dalle celle dove le importi e le inserisce in fondo a tutte (1-i dati piu’ vecchi sono in testa, i piu’ recenti in coda) o in testa (2-ordine inverso).

Se storicizzi da colonna A:XX, per il metodo 1 puoi fare cosi’:
-scrivi le intestazioni colonna su cella (es) A10 e adiacenti
-usi questa macro
Codice: Seleziona tutto
Sub bobbasotto()
Source = "A2:E2"          '<<<< inserire range in cui si aggiornano i dati da web
DeltaT = "00:05:00"  '<<< restart ogni 5 minuti; cambiare se necessario

Range(Source).copy
Range("A65536").end(xlup).offset(1,0).select
Activesheet.paste
Application.CutCopyMode = False
Application.OnTime Now + TimeValue(DeltaT), "bobbasotto"
End Sub


Per il metodo 2:
-scrivi sempre le intestazioni su riga 10
-usa questa macro:
Codice: Seleziona tutto
Sub bobbasopra()
Source = "A2:E2"          '<<<< inserire range in cui si aggiornano i dati da web
DeltaT = "00:05:00"  '<<< restart ogni 5 minuti; cambiare se necessario

    Rows("11:11").Select
    Selection.Insert Shift:=xlDown
    Range(Source).Select
    Selection.Copy
    Range("A11").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
Application.OnTime Now + TimeValue(DeltaT), "bobbasopra"
End Sub


Usa solo una delle due macro.
Lanciala la prima volta, e si rieseguira’ ogni tot tempo come impostato in DeltaT; per fermarla, va chiuso il foglio.
Per un metodo piu’ articolato sulla gestione ripetitiva di macro vedi in qui http://www.pc-facile.com/forum/viewtopic.php?t=52172 e qui http://www.pc-facile.com/forum/viewtopic.php?t=64356

Se hai bisogno di informazioni piu’ dettagliate, posta ancora.
Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi bobba10 » 16/10/07 09:20

Il codice 1 è perfetto.
ti faccio ancora una domandina, è possibile copiare e incollare il valore automaticamente quando varia, senza step di tempo impostati da me?

Grazie
bobba10
Newbie
 
Post: 4
Iscritto il: 15/10/07 14:56

Postdi Anthony47 » 17/10/07 11:17

La tecnica e’ quella di salvare su una cella di servizio il “valore corrente”; nella prossima esecuzione della macro verifiche se il nuovo valore corrente e’ diverso da quello salvato, se SI procedi con il salvataggio dati, altrimenti skippi e rischeduli solo la macro.
Questa risposta la puoi complementare con quanto ti ho scritto nell’ altro topic.

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

Postdi bobba10 » 18/10/07 09:15

Ancora una cosa.
Con la macro che mi hai dato, se apro un altro foglio excel, mi storicizza i dati su quest'ultimo, quindi sul foglio attivo. Come posso fare? Devo indicare il nome del foglio su cui voglio la storicizzazione?

Grazie
Marco
bobba10
Newbie
 
Post: 4
Iscritto il: 15/10/07 14:56

Postdi Anthony47 » 19/10/07 01:34

Avevi adottato bobbasotto; la modifichiamo come segue:

Codice: Seleziona tutto
Sub bobbasotto()
'Application.ScreenUpdating = True                  '<<< Scommentare per evitare flickering
Source = "A2:E2"          '<<<< inserire range in cui si aggiornano i dati da web
DeltaT = "00:05:00"  '<<< restart ogni 5 minuti; cambiare se necessario
'Leggi il file attivo, poi vai sul file da manipolare
AWB = ActiveWorkbook.Name
Workbooks("Il nome del mio file").Activate       '<<<<< Inserire nome file

Range(Source).copy
Range("A65536").end(xlup).offset(1,0).select
Activesheet.paste
Application.CutCopyMode = False
Application.OnTime Now + TimeValue(DeltaT), "bobbasotto"
'ritorna al foglio attivo
Workbooks(AWB).Activate
End Sub


La prima istruzione e’ commentata, quindi non viene eseguita; togli l’ apostrofo di testa se vuoi che lo schermo sia bloccato mentre viene cambiata la visualizzazione.

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


Torna a Applicazioni Office Windows


Topic correlati a "Aggiornamento dati excel da web":


Chi c’è in linea

Visitano il forum: Gianca532011 e 63 ospiti