Automatisch een werkboek sluiten

Gebruik VBA om automatisch een werkboek te sluiten.

Veel mensen werken in een omgeving waar gegevens vertrouwelijk zijn. Zeker als het gaat om cijfers is een Excel werkboek dan wellicht een bron van zorg.Je kunt specifieke cellen of werkbladen natuurlijk beveiligen.Je kunt een werkboek echter ook zo inrichten dat het zichzelf automatisch afsluit als er een bepaalde tijd niets aan is gewijzigd. Een paar simpele VBA procedures maken dat mogelijk. Hoe werkt dat?

A) Kopieer de volgende procedures en plak deze in de VBA editor (ALT+F11) in ThisWorkbook.

Option Explicit
Private Sub Workbook_Open()
Call SetTime
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call Disable
End Sub

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Call Disable
Call SetTime
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
Call Disable
Call SetTime
End Sub

B) Kopieer de volgende procedures en plak deze in de VBA editor (ALT+F11) in een gewone Module.

Option Explicit
Dim DownTime As Date

Public Sub SetTime()
DownTime = Now + TimeValue(“00:10:00”)
Application.OnTime DownTime, “Close_Workbook”
End Sub

Public Sub Disable()
On Error Resume Next
Application.OnTime EarliestTime:=DownTime, Procedure:=”Close_Workbook”, Schedule:=False
End Sub

Public Sub Close_Workbook()
ThisWorkbook.Close True
End Sub

Hoe het werkt.

Wanneer het werkboek wordt geopend, wordt via de procedure SetTime bepaald na hoeveel tijd de procedure Close_Workbook moeten worden uitgevoerd.

In dit voorbeeld is dat na 10 minuten (DownTime = Now + TimeValue(“00:10:00”).

De Workbook events SheetCalculate en SheetSelectionChange worden geactiveerd als er wijzigingen in het werkboek worden aangebracht. Als dat gebeurt worden de procedures Disable en SetTime uitgevoerd. Dit zorgt er voor dat de oude ingestelde tijd verloopt en er een nieuwe periode (van 10 minuten) wordt ingesteld die bepaald of het werkboek afgesloten moet worden.

Als de periode van 10 minuten verstrijkt wordt de procedure Close_Workbook uitgevoerd en wordt het werkboek afgesloten, waarbij eventuele niet opgeslagen wijzigingen worden bewaard via de procedure ThisWorkbook.Close True.

Download werkboek