Come chiudere la cartella di lavoro dopo un determinato periodo di tempo
Soluzione: è possibile utilizzare VBA per impostare un timer con Application.OnTime che chiude automaticamente la cartella di lavoro dopo una durata specificata. Questo è un modo efficace per far rispettare i limiti della versione di prova.
Combinare questo con le opzioni di sicurezza di XLS Padlock per vietare l’accesso all’editor VBA e compilare il codice VBA, in modo da impedire agli utenti di disattivare il timer.
Implementazione
Section titled “Implementazione”Inserire il codice seguente nel modulo ThisWorkbook del progetto VBA.
' --- In ThisWorkbook module ---
' Variable to store the scheduled time for the timerPrivate mScheduledTime As Date
' This procedure will be called by the timer to close the workbookPublic Sub CloseAndSave() ' Save any changes and close the workbook ThisWorkbook.Close SaveChanges:=TrueEnd Sub
' This event runs when the workbook is opened, starting the timerPrivate Sub Workbook_Open() ' Set the timer to run the "CloseAndSave" procedure in 8 hours. ' You can change the time value as needed. mScheduledTime = Now + TimeValue("08:00:00") Application.OnTime EarliestTime:=mScheduledTime, Procedure:="ThisWorkbook.CloseAndSave"
' Optional: Inform the user that the application will close automatically. ' MsgBox "This application will automatically close in 8 hours.", vbInformationEnd Sub
' This event runs just before the workbook closesPrivate Sub Workbook_BeforeClose(Cancel As Boolean) ' Cancel the scheduled OnTime event to prevent errors if the user ' closes the workbook manually before the timer runs. On Error Resume Next Application.OnTime EarliestTime:=mScheduledTime, Procedure:="ThisWorkbook.CloseAndSave", Schedule:=FalseEnd SubCome funziona
Section titled “Come funziona”Workbook_Open: all’avvio dell’applicazione, questo evento pianifica l’esecuzione della macroCloseAndSavedopo 8 ore (TimeValue("08:00:00")). È possibile regolare questa durata in base alle proprie esigenze (ad esempio,TimeValue("01:00:00")per un’ora).CloseAndSave: è la macro che esegue l’azione. Salva la cartella di lavoro e poi la chiude.Workbook_BeforeClose: è un passaggio di pulizia essenziale. Se l’utente chiude la cartella di lavoro manualmente, questo codice annulla il timer in attesa, impedendo a Excel di tentare di eseguire una macro su una cartella di lavoro che non è più aperta, cosa che provocherebbe un errore.