Come aggiornare periodicamente un foglio di lavoro Excel con un timer VBA

Condividi ora:

Questo articolo mostra come aggiornare un foglio di lavoro o un grafico a intervalli regolari. Questo esercizio crea un timer che aggiorna il foglio di lavoro ogni minuto, riflettendo le modifiche nei dati di origine.

Questo articolo presuppone che il lettore abbia visualizzato la barra multifunzione dello sviluppatore e abbia familiarità con l'editor VBA. In caso contrario, Google "Excel Developer Tab" o "Excel Code Window".

È possibile trovare un esempio della cartella di lavoro utilizzata in questo esercizio Qui..

Gli usi dei rapporti dinamici potrebbero essere:

  • Lettura del database proprietario fornito con il sistema telefonico aziendale, per analizzare le chiamate.
  • Genera un numero casuale ogni 15 minuti per premi o lotterie.
  • Invia automaticamente e-mail dal tuo database locale quando vengono raggiunti determinati livelli. (qui il timer deciderà se avviare o meno il processo, in base ai livelli raggiunti).

o, quello che useremo:

  • Visualizza l'ultimo tasso di cambio USD/EUR da Internet.

I dati vengono estratti dal file Sito web di Yahoo Finanza ogni minuto. Una volta testato con successo, dovrebbe essere sostituito con un intervallo di elaborazione più lungo.

L'interfaccia

Apri una nuova cartella di lavoro;

Assegna al primo foglio il nome "Display". Poiché le tabelle da D8 a E11 verranno compilate dal Web, non è necessario inserire valori o intestazioni di riga. Il resto è facoltativo.Preparare l'interfaccia

Il codice

Apri la finestra del codice VBA e inserisci un modulo. Copia il codice qui sotto nel modulo.

L'evento Auto_Open avvia il timer all'apertura della cartella di lavoro e lo arresta alla sua chiusura, a meno che il codice non venga interrotto dallo sviluppatore durante lo sviluppo.Codice VBA

Sub Auto_Open()
AlertTime = Now + TimeValue("00:01:00") 'interval in minutes
Application.OnTime AlertTime, "Ticker"      'call Sub Ticker, below
End Sub

Sub Ticker()
    Dim currBuy As String
    Dim currSell As String

    Range("D8:F11").ClearContents            'prepare the destination for the web data
    currBuy = "USD"
    currSell = "EUR"
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://finance.yahoo.com/q?s=" & currBuy & currSell & "=X", Destination:=Range("$D$8"))
        .Name = "q?s=" & currSell & currBuy & "=X"
        .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 = """table1"""
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
    AlertTime = Now + TimeValue("00:01:00") ‘move trigger on a minute
    Application.OnTime AlertTime, "Ticker"
End Sub

Il Risultato

Ogni n minuti la tabella nel Foglio “Display” verrà aggiornata dal sito web di Yahoo. Fare riferimento al sito Web di Microsoft per connessioni dati più complesse.

Ripristino di cartelle di lavoro danneggiate

È noto che Excel può bloccarsi in momenti inaspettati, probabilmente a causa di una carenza di risorse. In questi casi il file sorgente può essere danneggiato in modo irreversibile e non riaprirsi. In assenza di backup frequenti, uno strumento per il ripristino corrotto Excel i file sarebbero inestimabili.

Introduzione dell'autore:

Felix Hooker è un esperto di recupero dati in DataNumen, Inc., che è il leader mondiale nelle tecnologie di recupero dati, tra cui correzione rar e prodotti software di recupero SQL. Per maggiori informazioni visita www.datanumen.com

Condividi ora:

I commenti sono chiusi.