So schließen Sie die Arbeitsmappe nach einer bestimmten Zeitspanne
Lösung: Sie können VBA verwenden, um mit Application.OnTime einen Timer einzurichten, der die Arbeitsmappe nach einer festgelegten Dauer automatisch schließt. Dies ist eine wirksame Methode, um Testbeschränkungen durchzusetzen.
Kombinieren Sie dies mit den Sicherheitsoptionen von XLS Padlock, um den Zugriff auf den VBA-Editor zu verbieten, und kompilieren Sie Ihren VBA-Code, um zu verhindern, dass Benutzer den Timer deaktivieren.
Umsetzung
Section titled “Umsetzung”Fügen Sie den folgenden Code in das Modul ThisWorkbook Ihres VBA-Projekts ein.
' --- 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 SubSo funktioniert es
Section titled “So funktioniert es”Workbook_Open: Beim Start der Anwendung plant dieses Ereignis die Ausführung des MakrosCloseAndSavenach 8 Stunden (TimeValue("08:00:00")). Sie können diese Dauer an Ihre Bedürfnisse anpassen (zum BeispielTimeValue("01:00:00")für eine Stunde).CloseAndSave: Dies ist das Makro, das die Aktion ausführt. Es speichert die Arbeitsmappe und schließt sie anschließend.Workbook_BeforeClose: Dies ist ein entscheidender Bereinigungsschritt. Wenn der Benutzer die Arbeitsmappe manuell schließt, hebt dieser Code den ausstehenden Timer auf und verhindert so, dass Excel versucht, ein Makro für eine Arbeitsmappe auszuführen, die nicht mehr geöffnet ist, was zu einem Fehler führen würde.