Hoe u de werkmap na een bepaalde tijdsduur sluit
Oplossing: U kunt VBA gebruiken om met Application.OnTime een timer in te stellen die de werkmap na een opgegeven duur automatisch sluit. Dit is een doeltreffende manier om proefbeperkingen af te dwingen.
Combineer dit met de beveiligingsopties van XLS Padlock om toegang tot de VBA-editor te verbieden, en compileer uw VBA-code om te voorkomen dat gebruikers de timer uitschakelen.
Implementatie
Section titled “Implementatie”Voeg de volgende code in de module ThisWorkbook van uw VBA-project in.
' --- 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 SubHoe het werkt
Section titled “Hoe het werkt”Workbook_Open: Wanneer de toepassing wordt gestart, plant deze gebeurtenis de uitvoering van de macroCloseAndSavena 8 uur (TimeValue("08:00:00")). U kunt deze duur aanpassen aan uw behoeften (bijvoorbeeldTimeValue("01:00:00")voor een uur).CloseAndSave: Dit is de macro die de actie uitvoert. Zij slaat de werkmap op en sluit deze vervolgens.Workbook_BeforeClose: Dit is een cruciale opschoonstap. Als de gebruiker de werkmap handmatig sluit, annuleert deze code de openstaande timer. Zo wordt voorkomen dat Excel probeert een macro uit te voeren op een werkmap die niet meer geopend is, wat een fout zou veroorzaken.