Come eseguire una macro ogni 15 minuti

Antonio si chiede se esista un modo per eseguire automaticamente una macro ogni 15 minuti. Vorrebbe farlo senza influenzare le altre operazioni in Excel, il che significa che non vuole rimanere in loop in attesa per tutto il tempo.

La chiave per eseguire questo tipo di operazione è utilizzare il metodo .OnTime; consente di eseguire una macro particolare dopo un periodo di tempo specificato. Quindi, ad esempio, supponiamo che tu voglia eseguire una macro chiamata “MiaMacro” ogni 15 minuti. Puoi ottenere questo risultato semplicemente utilizzando la seguente macro a riga singola:

 

Sub StartTimer()
    Application.OnTime Now() + TimeValue("00:15:00"), "MiaMacro"
End Sub

 

 

Esattamente 15 minuti dopo l’esecuzione di questa macro, la macro MiaMacro verrà eseguita automaticamente, indipendentemente da ciò che stai facendo altrove in Excel. Una volta scaduto il tempo specificato per il metodo .OnTime e avviato MiaMacro, MiaMacro non verrà eseguita nuovamente finché non si eseguirà nuovamente la macro StartTimer e .OnTime verrà nuovamente richiamato. Tutto ciò significa che potresti voler effettuare una chiamata a StartTimer sulla prima riga di MiaMacro o sull’ultima riga, a seconda di quando desideri riavviare il timer.

Potresti, se lo desideri, modificare leggermente StartTimer per consentire il passaggio di un parametro, in questo modo:

 

Sub StartTimer(dMinutes As Double)
    Dim dAdjust As Double

    dAdjust = Now() + (dMinutes / (24 * 60))
    Application.OnTime dAdjust, "MiaMacro"
End Sub

 

 

Questo approccio fornisce un po’ più di flessibilità perché puoi passare a StartTimer il numero di minuti che desideri utilizzare con il metodo .OnTime. Ad esempio, se desideri avviare MiaMacro dopo 12,5 minuti, potresti aggiungere la seguente riga al codice esistente:

 

Call StartTimer(12.5)

 

 

Se aggiungi una riga di questo tipo nel codice MiaMacro, MiaMacro verrà eseguita ogni 12,5 minuti per sempre, finché Excel è in esecuzione. Se vuoi fermare il timer e non vuoi fermare Excel, dovrai apportare alcune modifiche alla configurazione della macro:

 

Public dTimeStore As Double

Sub StartTimer(dMinutes As Double)
    dTimeStore = Now() + (dMinutes / (24 * 60))
    Application.OnTime dTimeStore, "MiaMacro"
End Sub
Sub EndTimer()
    Application.OnTime dTimeStore, "MiaMacro", , False
End Sub

 

 

Da notare la dichiarazione della variabile dTimeStore, che viene utilizzata per memorizzare l’ultima volta che è stato utilizzato il metodo .OnTime. Ciò consente, a un certo punto, di chiamare correttamente la macro EndTimer e, a sua volta, il metodo .OnTime per disattivare il timer. Da notare, inoltre, nella macro EndTimer la presenza di due virgole sequenziali nell’invocazione di .OnTime. Ciò è necessario per garantire che i parametri siano nella posizione corretta come richiesto dal metodo.

 

 

 

Tags: , , , , , ,

Ti è stato utile?