Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1836to1840
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

Ontime läuft im Hintergrund weiter

Ontime läuft im Hintergrund weiter
05.07.2021 09:58:36
B
Hallo zusammen
Ich möchte ein Dokument aufsetzen, dass sich nach 90 ohne Bearbeitung automatisch unter einer Kopie speichert (mit der Dateinamen Erweiterung "Backup" und sich dann automatisch schliesst, so dass die Datei für andere User zur Bearbeitung freigegeben wird.
So kann verhindert werden, dass ein User die Datei noch offen hat und in Urlaub fährt und die anderen warten müssen.
Der Code sieht wie folgt aus
##########################################################
Public blnCloseNow As Boolean
Public pfad As String
Dim dblZeit As Double
##########################################################
'Dies ist das Makro das den Timer zum Schließen der Datei enthält, es wird bei jeder Änderung aufgerufen

Public Sub SetStartTime()
On Error Resume Next
If InStr(Application.ThisWorkbook.Name, "Backup") Then
Application.OnTime dblZeit, Procedure:="MappeSchliessen", schedule:=False
Else
Application.OnTime dblZeit, Procedure:="MappeSchliessen", schedule:=False
On Error GoTo 0
If blnCloseNow = False Then
dblZeit = Now + TimeValue("01:30:00")
Application.OnTime dblZeit, Procedure:="MappeSchliessen", schedule:=True
End If
End If
End Sub
##########################################################################
'Dies ist das Makro das die Datei nach Ablauf des Timers schließt

Public Sub MappeSchliessen()
Dim strMsg As String
On Error Resume Next
If InStr(Application.ThisWorkbook.Name, "Backup") Then
'On Error Resume Next
Application.OnTime dblZeit, Procedure:="MappeSchliessen", schedule:=False
Else
'Prüfung ob die Datei bearbeitet wird und falls nicht, Warnmeldung, dass die Datei länger wie der genehmigte Zeitraum offen ist.'
'Wird Sie wieder bearbeitet wird startet der Zähler wieder bei Null'
If blnCloseNow = False Then
strMsg = "Das Excel-File wurde seit 90 Minuten nicht bearbeitet. Sollte innerhalb der nächsten Minuten keine Bearbeitung stattfinden, wird die Datei automatisch geschlossen." & vbCrLf & _
"Der aktuelle Zustand wird in einer Backup Datei abgespeichert"
CreateObject("WScript.Shell").Popup strMsg, 10, ThisWorkbook.Name, _
vbOKOnly + vbInformation + vbSystemModal
blnCloseNow = True
dblZeit = Now + TimeSerial(0, 1, 0)
Application.OnTime dblZeit, Procedure:="MappeSchliessen"
'Excel Warnmeldung in den Vordergrund um den Hinweis zur Programmschließung sichtbar zu machen
'AppActivate (Application.Caption)
'Sollte keine Bearbeitung stattgefunden haben --> Schließung des Programms
Else
pfad = Application.ThisWorkbook.Path & "\Datenbank Backup " & "" & Format(Now, "DD_MM_YYYY_hh_mm") & ".xlsm"
Application.OnTime dblZeit, Procedure:="MappeSchliessen", schedule:=False
With ThisWorkbook
.SaveAs Filename:=pfad
If Workbooks.Count = 1 Then
Application.DisplayAlerts = False
Application.Quit
Else
ThisWorkbook.Close savechanges:=true
End If
End With
End If
End If
End Sub
########################################################################
Soweit alles gut, kommt vom User 90 Minuten keine Eingabe, wird die Datei als Backup gespeichert und die original Datei wird geschlossen.
Problem 1:
Wenn ich das Backup schliesse, aber zeitgleich noch eine andere Excel Datei offen habe (und wenn es nur eine leere "Mappe 1" ist) läuft die Abfrage immer noch weiter!
Man bearbeitet die Datenbank, speichert, schliesst sie, und nach 90 Minuten kommt ohne Vorwarnung wieder ein Dialog, dass die längst geschlossene Arbeitsmappe nicht mehr bearbeitet wurde.
Das geht so lange, bis man Excel komplett schliesst.
Das passiert aber nicht immer!
Problem 2:
Wenn man eine weitere Excel offen hat, kann es sein dass die Original Datei wieder geöffnet wird! Diese fragt dann nach ob sie gespeichert werden soll?
Im Hintergrund muss das .ontime wohl manchmal weiterlaufen, wie kann ich das löschen?
Es muss doch möglich sein, sämtliche laufende Timer der Datei mit dem Beenden der Hauptdatei zu beenden, so dass die Meldung weder im Backup noch in anderen Excel Dokumenten auftaucht?
Gruß und Danke im Voraus
Björn

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ontime läuft im Hintergrund weiter
05.07.2021 12:42:26
Tobias
Hallo Björn,

Else
pfad = Application.ThisWorkbook.Path & "\Datenbank Backup " & "" & Format(Now, "DD_MM_YYYY_hh_mm") & ".xlsm"
   Application.OnTime dblZeit, Procedure:="MappeSchliessen", schedule:=False
.OnTime funktioniert auf Application Ebene, du rufst Sie also selber wieder auf bevor du deine Arbeitsmappe schließt. Das erklärt somit dein Problem 1. Problem 2 würde ich vermuten hängt damit aber auch irgendwie zusammen.
Schöne Grüße
Tobias
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige