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

Warten bis das Speichern einer Datei abgeschlossen

Forumthread: Warten bis das Speichern einer Datei abgeschlossen

Warten bis das Speichern einer Datei abgeschlossen
13.11.2015 11:46:43
Sabrina
Hallo Leute,
ich habe eine Datei namens Daten.xls, auf die mehrere Rechner per Makro zugreifen, bearbeiten und speichern.
Es soll aber kein Speichern möglich sein wenn ein anderer gerade eben diese Datei am speichern ist da dann eine Fehlermeldung und ein Abbruch des Markos einhergeht.
Um dies zu verhindern habe ich mir gedacht einen "Speicherstatus" zu deklarieren.
Wenn keiner speichert ist der Wert 1 sobald einer speichert ist der Wert 2 und wenn man fertig ist wird er wieder auf 1 gesetzt.
Nur bekomme ich nicht hin dass wenn der Status auf 2 Steht solange geprüft wird bis der Wert auf 1 geändert ist und dann das Makro weiter ausgeführt wird.
Ich habe mal eine Beispiel Datei erstellt.
https://www.herber.de/bbs/user/101487.zip
In meinen normalen Daten ist sichergestellt dass die Datei Daten.xls auch geöffnet ist.
Oder hat jemand eine andere Idee dies umzusetzen.
LG
Sabbel
Sub Daten_speichern()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Windows("Daten.xls").Activate
Speicherstatus = Range("Speicherstatus")
If Speicherstatus = 2 Then
MsgBox "Bitte warten!"
End If
Speicherstatus = 2
'Das Makro wird durchgeführt
Speicherstatus = 1
End Sub

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Warten bis das Speichern einer Datei abgeschlossen
14.11.2015 14:08:56
Tino
Hallo,
man könnte es mal so versuchen, wenn das Speichern auf einen Fehler läuft,
diesen Speicher Vorgang zu wiederholen bis kein Fehler mehr erzeugt wird oder
dieser nach drei versuchen nicht funktioniert hat.
Nicht ausgiebig getestet!
kommt als Code in DieseArbeitsmappe
Option Explicit 
Dim CountSave% 
 
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
On Error Resume Next 
If Not SaveAsUI Then 
    If Me.ReadOnly = False Then 
        Application.EnableEvents = False 
        Me.Save 
        Cancel = True 
        If Err.Number <> 0 Then 
            CountSave = CountSave + 1 
            If CountSave > 2 Then 
                MsgBox "Speichern nach " & CountSave & " versuchen gescheitert", vbExclamation 
                CountSave = 0 
                Application.EnableEvents = True 
                Exit Sub 
            End If 
            Application.OnTime Now + TimeSerial(0, 0, 1), "'DieseArbeitsmappe.Workbook_BeforeSave ""0"", ""0""'" 
            Exit Sub 
        End If 
        CountSave = 0 
        Application.EnableEvents = True 
    Else 
        CountSave = 0 
        MsgBox "Datei ist Schreibgeschützt, speichern nicht möglich!", vbExclamation 
    End If 
End If 
End Sub 
Gruß Tino
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Warten bis das Speichern einer Datei abgeschlossen ist


Schritt-für-Schritt-Anleitung

Hier ist eine einfache Schritt-für-Schritt-Anleitung, wie Du den "Speicherstatus" in Deinem Excel-Makro implementieren kannst, um sicherzustellen, dass das Speichern einer Datei nicht von mehreren Benutzern gleichzeitig erfolgt:

  1. Öffne Deine Excel-Datei und gehe in den VBA-Editor (drücke ALT + F11).
  2. Füge ein neues Modul hinzu oder verwende bereits bestehende Module.
  3. Kopiere den folgenden Code in das Modul:
Sub Daten_speichern()
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Windows("Daten.xls").Activate
    Speicherstatus = Range("Speicherstatus")

    ' Prüfen, ob ein anderer Benutzer speichert
    While Speicherstatus = 2
        MsgBox "Bitte warten!"
        DoEvents ' Ermöglicht das Beenden von anderen Prozessen
        Speicherstatus = Range("Speicherstatus") ' Status erneut prüfen
    Wend

    Speicherstatus = 2 ' Status auf "Speichern" setzen
    ' Das Makro wird durchgeführt
    ' (Deine Speichervorgänge hier)
    Speicherstatus = 1 ' Status zurücksetzen
End Sub
  1. Aktualisiere den Zellwert für "Speicherstatus" in Deiner Excel-Datei, um den Status zu steuern.

Häufige Fehler und Lösungen

Hier sind einige häufige Fehler, die beim Speichern auftreten können, und wie Du sie beheben kannst:

  • Fehler: "Speichern nicht möglich"

    • Lösung: Stelle sicher, dass die Datei nicht schreibgeschützt ist. Überprüfe die Berechtigungen der Datei und ändere sie gegebenenfalls.
  • Fehler: Makro wird abgebrochen

    • Lösung: Überprüfe den Wert des "Speicherstatus". Wenn dieser nicht korrekt gesetzt ist, kann das Makro nicht wie gewünscht funktionieren.

Alternative Methoden

Falls die oben beschriebene Methode nicht funktioniert, kannst Du auch die folgende Methode ausprobieren, um den Speicherprozess zu optimieren:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    On Error Resume Next
    If Not SaveAsUI Then
        If Me.ReadOnly = False Then
            Application.EnableEvents = False
            Me.Save
            Cancel = True
            If Err.Number <> 0 Then
                ' Fehlerbehandlung, z.B. erneutes Speichern versuchen
            End If
            Application.EnableEvents = True
        Else
            MsgBox "Datei ist Schreibgeschützt, speichern nicht möglich!", vbExclamation
        End If
    End If
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du den "Speicherstatus" in verschiedenen Szenarien nutzen kannst:

  1. Synchronisiere mehrere Benutzer:

    • Setze den Speicherstatus in einer gemeinsamen Datei, sodass alle Benutzer den Status sehen und wissen, wann sie speichern können.
  2. Automatisiere den Speicherprozess:

    • Verwende das Makro in Kombination mit einer Benutzeroberfläche, um das Speichern zu steuern.

Tipps für Profis

  • Verwende DoEvents: Dies ermöglicht es Excel, andere Prozesse während der Wartezeit zu verarbeiten, wodurch Deine Anwendung reaktionsschneller bleibt.
  • Fehlerprotokollierung: Implementiere eine Protokollierung, um Fehler während des Speicherns aufzuzeichnen und später zu analysieren.
  • Testen: Teste Deine Makros gründlich in einer kontrollierten Umgebung, bevor Du sie in der Produktion einsetzt.

FAQ: Häufige Fragen

1. Wie kann ich den Speicherstatus in einer anderen Arbeitsmappe nutzen?
Du kannst den Speicherstatus in einer anderen Arbeitsmappe verwenden, indem Du die Arbeitsmappe über den Code referenzierst.

2. Was passiert, wenn ein Benutzer die Datei schließt?
Wenn ein Benutzer die Datei schließt, ohne den Status zurückzusetzen, könnte dies zu Problemen führen. Stelle sicher, dass der Status beim Schließen der Datei zurückgesetzt wird.

3. Kann ich diese Technik auch für andere Excel-Funktionen verwenden?
Ja, diese Technik kann auch für andere Funktionen verwendet werden, bei denen mehrere Benutzer gleichzeitig auf eine Datei zugreifen.

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