Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Schließen wenn Zeit abgelaufen problem

Schließen wenn Zeit abgelaufen problem
14.05.2019 08:04:00
Jens
Hallo zusammen,
ich habe ein Problem. Ich nutze ein Makro, um eine geöffnete Excelmappe nach 10 min Inaktivität zu speichern und zu schließen.
Dieses funktioniert im Prinzip auch gut.
Leider ist es so, dass einige Kollegen noch andere Exceldokumente neben meines geöffnet haben.
Bei denen ist es jetzt so, dass wenn meine Excelmappe gespeichert und geschlossen wurde, diese nach 10 min wieder aufploppt und wiederholt gespeichert werden muss/soll.
Leider weiß ich nicht warum.. Mein Dokument mit dem Code wurde ja schon längst wieder geschlossen. Also warum kommt mein Dokument nach dem schließen von alleine noch einmal wieder hoch? Habt ihr eine Idee bzw. Lösung für mich?
Folgendes Makro nutze ich:
Diese Arbeitsmappe
Dim altezeit

Private Sub Workbook_Open()
On Error Resume Next
neuezeit = Time + TimeSerial(0, 10, 0)
Application.OnTime EarliestTime:=altezeit, Procedure:="Schließen", Schedule:=False
altezeit = neuezeit
Application.OnTime neuezeit, "Schließen"
End Sub

Modul 5
Sub Schließen()
ActiveWorkbook.Close savechanges:=True
End Sub
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schließen wenn Zeit abgelaufen problem
14.05.2019 08:21:40
Hajo_zi
es fehlt
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime EarliestTime:=DaEt, Procedure:="Schließen", Schedule:=False
End Sub

würde ich vermuten.
ansonsten schaue mal hier
http://hajo-excel.de/vba_datei_schlieszen.htm

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
Anzeige
AW: Schließen wenn Zeit abgelaufen problem
14.05.2019 11:47:34
Jens
Hallo,
Danke für den Vorschlag. Leider bekomme ich jetzt einen Laufzeitfehler 1004: Die Methode "OnTime" für das Objekt "_application" ist fehlgeschlagen.
habe das bei mir so eingefügt:
Dim altezeit
Dim DaEt As Date
Private Sub Workbook_Open()
On Error Resume Next
neuezeit = Time + TimeSerial(0, 10, 0)
Application.OnTime EarliestTime:=altezeit, Procedure:="Schließen", Schedule:=False
altezeit = neuezeit
Application.OnTime neuezeit, "Schließen"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime EarliestTime:=DaEt, Procedure:="Schließen", Schedule:=False
End Sub

Anzeige
Dann sage ich mal Danke...
14.05.2019 13:41:51
Werner
Hallo Jens,
...fürs Ignorieren.
Weiter äußere ich mal die Vermutung, dass das Date heißen sollt und nicht DaEt.
Gruß Werner
AW: Schließen wenn Zeit abgelaufen problem
14.05.2019 19:16:23
Hajo_zi
dazu kann ich nichts schreiben, was wohl daran liegt das ich nicht auf fremde Rechner schaue und ich baue keine Datei nach.
Gruß Hajo
Anzeige
AW: Schließen wenn Zeit abgelaufen problem
14.05.2019 11:06:38
Werner
Hallo Jens,
hier auf alle Fälle nicht
Sub Schließen()
ActiveWorkbook.Close savechanges:=True
End Sub

sondern
Sub Schließen()
ThisWorkbook.Close savechanges:=True
End Sub
Sonst wird die falsche Datei geschlossen, sollte ein anderes Workbook aktiv sein.
Gruß Werner
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Automatisches Schließen von Excel-Dateien nach Inaktivität


Schritt-für-Schritt-Anleitung

Um eine Excel-Datei automatisiert nach 10 Minuten Inaktivität zu schließen, kannst du das folgende Makro verwenden. Stelle sicher, dass du in der VBA-Entwicklungsumgebung arbeitest:

  1. Öffne deine Excel-Datei und drücke ALT + F11, um die VBA-Entwicklungsumgebung zu öffnen.

  2. Füge den folgenden Code in das Modul Diese Arbeitsmappe ein:

    Dim altezeit As Date
    Dim neuezeit As Date
    
    Private Sub Workbook_Open()
       On Error Resume Next
       neuezeit = Time + TimeSerial(0, 10, 0)
       Application.OnTime EarliestTime:=altezeit, Procedure:="Schließen", Schedule:=False
       altezeit = neuezeit
       Application.OnTime neuezeit, "Schließen"
    End Sub
  3. Füge im Modul Modul 5 den folgenden Code ein:

    Sub Schließen()
       ThisWorkbook.Close savechanges:=True
    End Sub
  4. Um sicherzustellen, dass das Makro auch beim Schließen der Arbeitsmappe korrekt funktioniert, füge den folgenden Code in Diese Arbeitsmappe ein:

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
       Application.OnTime EarliestTime:=altezeit, Procedure:="Schließen", Schedule:=False
    End Sub

Jetzt sollte deine Excel-Datei nach 10 Minuten Inaktivität automatisch gespeichert und geschlossen werden.


Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Wenn du den Fehler "Die Methode 'OnTime' für das Objekt '_application' ist fehlgeschlagen" erhältst, überprüfe, ob die Variablen altezeit und neuezeit korrekt definiert sind. Stelle sicher, dass alle Variablen im richtigen Bereich deklariert sind.

  • Falsche Datei wird geschlossen: Verwende ThisWorkbook.Close anstelle von ActiveWorkbook.Close, um sicherzustellen, dass immer die korrekte Datei geschlossen wird.


Alternative Methoden

Wenn du eine andere Methode bevorzugst, um die Excel-Datei zu schließen, kannst du auch die Application.Wait-Methode nutzen. Diese Methode könnte jedoch die Benutzererfahrung beeinträchtigen, da sie Excel für die angegebene Zeit einfriert.

Ein Beispiel wäre:

Sub AutomatischesSchließen()
    Application.Wait (Now + TimeValue("0:10:00"))
    ThisWorkbook.Close savechanges:=True
End Sub

Praktische Beispiele

Angenommen, du möchtest ein Arbeitsblatt haben, das Daten über einen bestimmten Zeitraum speichert. Mit dem obigen Makro könntest du sicherstellen, dass das Arbeitsblatt nicht offen bleibt, wenn du es nicht mehr benötigst. Dies ist besonders nützlich in einer Umgebung, in der mehrere Excel-Dateien geöffnet sind, wie es in vielen Büros der Fall ist.


Tipps für Profis

  • Testen in einer Kopie: Teste deine Makros immer in einer Kopie deiner Arbeitsmappe, um unerwünschte Datenverluste zu vermeiden.
  • Fehlerbehandlung: Füge eine Fehlerbehandlung in deine Makros ein, um unerwartete Probleme zu vermeiden und die Benutzerfreundlichkeit zu verbessern.

    On Error GoTo ErrorHandler
    ' Dein Code hier
    Exit Sub
    ErrorHandler:
      MsgBox "Ein Fehler ist aufgetreten: " & Err.Description

FAQ: Häufige Fragen

1. Was passiert, wenn ich die Datei während der Wartezeit öffne?
Die Wartezeit wird weiterhin gezählt, und die Datei schließt sich nach der festgelegten Zeit, unabhängig davon, ob du sie geöffnet hast.

2. Kann ich die Zeitspanne anpassen?
Ja, du kannst die Zeit in TimeSerial(0, 10, 0) ändern, um die Anzahl der Minuten, die die Datei offen bleibt, zu erhöhen oder zu verringern.

3. Funktioniert das auch in Excel Online?
Leider funktioniert VBA nicht in Excel Online. Du musst die Desktop-Version von Excel verwenden, um diese Makros auszuführen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige