Como fechar a planilha após um período determinado
Solução: Você pode usar VBA para configurar um temporizador com Application.OnTime que feche automaticamente a planilha após uma duração determinada. Essa é uma forma eficaz de impor limites de avaliação.
Combine isso com as opções de segurança do XLS Padlock para proibir o acesso ao editor de VBA e compile seu código VBA para impedir que os usuários desativem o temporizador.
Implementação
Section titled “Implementação”Insira o código a seguir no módulo ThisWorkbook do seu projeto 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 SubComo funciona
Section titled “Como funciona”Workbook_Open: Quando a aplicação é iniciada, este evento agenda a macroCloseAndSavepara ser executada após 8 horas (TimeValue("08:00:00")). Você pode ajustar essa duração de acordo com suas necessidades (por exemplo,TimeValue("01:00:00")para uma hora).CloseAndSave: Esta é a macro que realiza a ação. Ela salva a planilha e depois a fecha.Workbook_BeforeClose: Esta é uma etapa de limpeza fundamental. Se o usuário fechar a planilha manualmente, este código cancela o temporizador pendente, evitando que o Excel tente executar uma macro em uma planilha que não está mais aberta, o que causaria um erro.