Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1876to1880
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA zum automatischem Schließen

VBA zum automatischem Schließen
25.03.2022 07:14:34
Lara
Guten Morgen,
wir haben das Problem, dass User immer wieder Dateien nicht schließen und im schlimmsten Fall bis zum nächsten Morgen geöffnet lassen.
Dieses Problem habe ich schon lösen können, die Datei schließt sich jetzt nach 15 Minuten Inaktivität automatisch.
Dazu ist unter "Diese Arbeitsmappe" folgendes hinterlegt:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Call AutoCloseStop
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
AutoCloseStop
AutoCloseStart
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
AutoCloseStop
AutoCloseStart
End Sub
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
AutoCloseStop
AutoCloseStart
End Sub
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
AutoCloseStop
AutoCloseStart
End Sub
Sowie als öffentliches Modul:

Public Const ciIntervall As Integer = 1
Public Const dsMacro As String = "AutoClose"
Public gdNextTime As Double
Private iWait As Integer
Const cMax = 900 ' -> 15 Minuten
Dim Zeit As Date
Sub AutoClose()
iWait = iWait + 1
If cMax - iWait > 0 Then
Application.StatusBar = Format(Zeit - TimeSerial(0, 0, iWait), "hh:mm:ss")
gdNextTime = Now + TimeSerial(0, 0, ciIntervall)
Application.OnTime gdNextTime, dsMacro
Else
ThisWorkbook.Save
ThisWorkbook.Close
End If
End Sub
Sub AutoCloseStart()
iWait = 0
Zeit = TimeSerial(0, 0, cMax)
Application.StatusBar = Zeit
Call AutoClose
End Sub
Sub AutoCloseStop()
On Error Resume Next
Application.StatusBar = ""
Application.OnTime earliesttime:=gdNextTime, _
procedure:=dsMacro, schedule:=False
End Sub
Das funktioniert soweit auch sehr gut, auch wenn ich nebenbei eine weitere Datei öffne.
Was leider nicht mehr funktioniert ist das manuelle schließen der Datei mit dem Timer, sobald eine zweite Datei geöffnet ist.
Er schließt zwar die Datei, öffnet Sie jedoch direkt wieder neu. Das mit dem manuellen schließen klappt nur, wenn keine andere Datei geöffnet ist.
Hat jemand eine Idee, was ich an der Datei ändern muss, damit das klappt?
Vielen Dank schonmal :)

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA zum automatischem Schließen
25.03.2022 10:55:02
PawelPopolski
Hallo,
dein Problem wird durch die Reihenfolge der Events verursacht. Beim Schliessen der Datei wird zuerst Workbook_BeforeClose ausgeführt. Danach aber noch Workbook_WindowDeactivate. Hier steht aber wieder AutoCloseStart und du verfängst dich in einer Endlosschleife.
Entweder das Workbook_WindowDeactivate raus lassen oder in DieseArbeitsmappe folgende Änderungen vornehmen
Option Explicit
Dim out As Boolean

Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Call AutoCloseStop
 out=true
End Sub

Private Sub Workbook_Open()
out = False
End Sub

.
.
.

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
AutoCloseStop
 If out = False Then AutoCloseStart
End Sub

Anzeige

30 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige