Warten bis das Speichern einer Datei abgeschlossen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Warten bis das Speichern einer Datei abgeschlossen
von: Sabrina
Geschrieben am: 13.11.2015 11:46:43

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

Bild

Betrifft: AW: Warten bis das Speichern einer Datei abgeschlossen
von: Tino
Geschrieben am: 14.11.2015 14:08:56
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

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Warten bis das Speichern einer Datei abgeschlossen"