Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Exceltabelle nach bestimmter Uhrzeit schließen

Exceltabelle nach bestimmter Uhrzeit schließen
08.09.2016 10:26:50
Jonny

Ich möchte das die Exceltabelle immer um 07:57 gespeichert und geschlossen wird.
Das folgende VBA funktioniert soweit recht gut. Nur ist es jetzt so das die Exceltabelle nicht  _
mehr manuell geschlossen werden kann. D.h. das ich die Tabelle nur geschlossen bekomme wenn ich Excel kommplett beende.
Kann mir hier jemand weiterhelfen
Modul Modul1
Sub Speicher_und_Schließe()
Dim iStunde, iMinute As Integer
iStunde = 7
iMinute = 57
If Hour(Time) = iStunde And Minute(Time) = iMinute Then
ThisWorkbook.Save
ThisWorkbook.Close
Else
Application.OnTime Now + TimeValue("00:01:00"), "Speicher_und_Schließe"
End If
End Sub
Microsoft Excel Objekt DieseArbeitsmappe
Private Sub Workbook_Open()
Call Speicher_und_Schließe
End Sub 

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Hier ist die Lösung...
08.09.2016 11:40:21
Jonny

'   Code in DieserArbeitsmappe
Option Explicit
Private Sub Workbook_Open()
Const cClosingTime = "07:57"
dCloseTime = Date _
+ IIf(Time > CDate(cClosingTime), 1, 0) _
+ TimeSerial(Hour(cClosingTime), Minute(cClosingTime), Second(cClosingTime))
Application.OnTime EarliestTime:=dCloseTime, Procedure:="SpeichernSchliessen"
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If dCloseTime > 0 Then
On Error Resume Next
Application.OnTime EarliestTime:=dCloseTime, Procedure:="SpeichernSchliessen", Schedule: _
=False
dCloseTime = 0
End If
End Sub
'   Code im Module
Option Explicit
Public dCloseTime As Double
Sub SpeichernSchliessen()
ThisWorkbook.Close SaveChanges:=True
dCloseTime = 0
End Sub 

Anzeige
;

Forumthreads zu verwandten Themen

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

Exceltabelle automatisch zu einer bestimmten Uhrzeit schließen


Schritt-für-Schritt-Anleitung

Um deine Exceltabelle automatisch um 07:57 Uhr zu speichern und zu schließen, kannst du den folgenden VBA-Code verwenden. Dieser Code sorgt dafür, dass die Tabelle nicht manuell geschlossen werden muss, was in einigen Fällen problematisch sein kann.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke im Projektfenster auf deine Arbeitsmappe und füge den folgenden Code in das Modul DieseArbeitsmappe ein:
Option Explicit
Private Sub Workbook_Open()
    Const cClosingTime = "07:57"
    dCloseTime = Date + IIf(Time > CDate(cClosingTime), 1, 0) + TimeSerial(Hour(cClosingTime), Minute(cClosingTime), Second(cClosingTime))
    Application.OnTime EarliestTime:=dCloseTime, Procedure:="SpeichernSchliessen"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If dCloseTime > 0 Then
        On Error Resume Next
        Application.OnTime EarliestTime:=dCloseTime, Procedure:="SpeichernSchliessen", Schedule:=False
        dCloseTime = 0
    End If
End Sub
  1. Erstelle ein neues Modul, indem du mit der rechten Maustaste auf "Module" klickst und "Einfügen" wählst. Füge folgenden Code ein:
Option Explicit
Public dCloseTime As Double
Sub SpeichernSchliessen()
    ThisWorkbook.Close SaveChanges:=True
    dCloseTime = 0
End Sub
  1. Speichere deine Arbeitsmappe als .xlsm (Makro-fähige Arbeitsmappe).

Häufige Fehler und Lösungen

  • Problem: Die Tabelle kann nicht mehr manuell geschlossen werden.

    • Lösung: Stelle sicher, dass der Workbook_BeforeClose-Code korrekt implementiert ist. Dieser Teil des Codes verhindert, dass der automatische Schließvorgang das manuelle Schließen blockiert.
  • Problem: Der Schließvorgang funktioniert nicht zur festgelegten Uhrzeit.

    • Lösung: Überprüfe, ob die Zeit korrekt im Code angegeben ist und dass der Computer die richtige Systemzeit hat.

Alternative Methoden

Eine alternative Methode, um ein Excel-Dokument zu einer bestimmten Uhrzeit zu schließen, besteht darin, den Windows Task Scheduler zu nutzen, um ein Skript auszuführen. Dies erfordert jedoch mehr technische Kenntnisse und ist nicht so benutzerfreundlich wie der VBA-Code.


Praktische Beispiele

Angenommen, du möchtest, dass deine Excel-Datei jeden Tag um 17:00 Uhr geschlossen wird. Ändere einfach die Konstante cClosingTime in der Workbook_Open-Subroutine:

Const cClosingTime = "17:00"

Dies ermöglicht dir, die Flexibilität zu haben, die Schließzeit nach deinen Bedürfnissen anzupassen.


Tipps für Profis

  • Testen: Teste deinen Code in einer nicht kritischen Arbeitsmappe, um unerwünschte Datenverluste zu vermeiden.
  • Backup: Erstelle regelmäßig Backups deiner Dateien, insbesondere wenn du mit automatisierten Schließvorgängen arbeitest.
  • Fehlerprotokollierung: Ergänze deinen Code um Fehlerbehandlungsroutinen, um Probleme leichter identifizieren zu können.

FAQ: Häufige Fragen

1. Kann ich den Code anpassen, um die Tabelle zu einer anderen Uhrzeit zu schließen? Ja, ändere einfach den Wert der cClosingTime-Konstante im Workbook_Open-Code.

2. Was passiert, wenn Excel nicht geöffnet ist? Der Code wird erst aktiv, wenn die Arbeitsmappe geöffnet wird. Stelle sicher, dass Excel vor der festgelegten Zeit geöffnet ist.

3. Funktioniert dieser Code in allen Excel-Versionen? Der VBA-Code sollte in modernen Versionen von Excel (z.B. Excel 2010 und höher) funktionieren. Bei älteren Versionen können Anpassungen notwendig sein.

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