Pular para o conteúdo

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.

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 timer
Private mScheduledTime As Date
' This procedure will be called by the timer to close the workbook
Public Sub CloseAndSave()
' Save any changes and close the workbook
ThisWorkbook.Close SaveChanges:=True
End Sub
' This event runs when the workbook is opened, starting the timer
Private 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.", vbInformation
End Sub
' This event runs just before the workbook closes
Private 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:=False
End Sub
  1. Workbook_Open: Quando a aplicação é iniciada, este evento agenda a macro CloseAndSave para 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).
  2. CloseAndSave: Esta é a macro que realiza a ação. Ela salva a planilha e depois a fecha.
  3. 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.