VBA - Backup speichern scheitert

Hallo Experten,

ich hab ein kleines VBA-Script geschrieben, das ich einfach nicht verstehe… -.-

Szenario: 2 Leute sollen eine Datei bearbeiten können. Der Speicherort ist shared. Die Exceldatei hat ein Schreibkennwort, kann aber nicht vor unbefugter Löschung geschützt werden…
Um zu verhindern, dass jemand „save as“ macht und unsere Daten überschreibt hab ich ein Script geschrieben, das ein Backup auf dem Server und lokal speichern soll.
das tut es soweit auch - aber mit Einschränkungen…

Ist vom aktuellen Tag keine Datei vorhanden, dann wird diese völlig korrekt angelegt - sowohl lokal als auch auf dem Server.
Ist die Datei allerdings schon vorhanden, dann wird die Datei nur noch an dem Ort gespeichert, von dem aus sie geöffnet wurde.
Normalerweise würde ich erwarten, dass nachgefragt wird ob ich die Datei überschreiben will, aber das geschieht nicht…
Worin liegt der Fehler?

Hier mein kleines Makro:

Sub backup\_speichern()
 On Error Resume Next 'Fehler beim Verzeichniswechsel verhindern...
 ChDir ("D:\_DATA") ' Ingos verzeichnis
 ChDir ("D:\Save\Badminton") ' Michis Verzeichnis


 ' erstellen des Dateinamens
 datum = Date
 sorted = "Badminton\_" & Mid$(datum, 7, 4) & "-" & Mid$(datum, 4, 2) & "-" & Mid$(datum, 1, 2) & ".xls"

 ' lokales speichern
 savename = CurDir & "\" & sorted
 ActiveWorkbook.SaveAs Filename:=savename, FileFormat:=xlNormal, CreateBackup:=False

 ' überprüfung
 check = ThisWorkbook.FullName
 If check = savename Then
 Msg = "Backup erfolgreich..." & Chr(10) & Chr(10)
 Else
 Msg = "Lokale Speicherung gescheitert..." & Chr(10) & Chr(10)
 End If

 ' speichern im Netz...
 serverpath = "\\de.local\data\filetransfer\Huber\"
 serversavename = serverpath & sorted
 ActiveWorkbook.SaveAs Filename:=serversavename, FileFormat:=xlNormal, CreateBackup:=False

 ' überprüfung
 check = ThisWorkbook.FullName
 If check = serversavename Then
 messi = Msg & "Netzspeicherung erfolgreich..."
 Else
 messi = Msg & "Netzspeicherung gescheitert..."
 End If

 MsgBox messi
End Sub

vielen Dank
Munich

Hallo Munich,

Ist vom aktuellen Tag keine Datei vorhanden, dann wird diese
völlig korrekt angelegt - sowohl lokal als auch auf dem
Server.
Ist die Datei allerdings schon vorhanden, dann wird die Datei
nur noch an dem Ort gespeichert, von dem aus sie geöffnet
wurde.

Ist mir ein bisschen unklar.
Du öffnest lokal, also ist sie ja dann wohl lokal vorhanden*g, dann wird sie da ja auch gespeichert wie gewünscht!?
Aber sie wird dann nicht im Netz gespeichert wenn sie dort schon ist?
Kannst du mal eine Tabelle basteln mit allen 8 Möglichkeiten

GeöffnetIn Netzvorhanden lokalvorhanden lokalgespeichert Netzgespeichert
lokal nein nein
lokal nein ja
lokal ja nein
lokal ja ja
Netz nein nein
Netz nein ja
Netz ja nein
Netz ja ja

Normalerweise würde ich erwarten, dass nachgefragt wird ob ich
die Datei überschreiben will, aber das geschieht nicht…
Worin liegt der Fehler?

DisplayAlerts ist True?

Diesen Code finde ich übersichtlicher:

Dim mldg As String
Sub backup\_speichern2()
 On Error Resume Next 'Fehler beim Verzeichniswechsel verhindern...
 'ChDir ("D:\_DATA") ' Ingos verzeichnis
 ChDir ("D:\Save\Badminton") ' Michis Verzeichnis
 ' erstellen des Dateinamens
 datum = Date
 sorted = "Badminton\_" & Mid$(datum, 7, 4) & "-" & Mid$(datum, 4, 2) & "-" & Mid$(datum, 1, 2) & ".xls"
 Call speichern("D:\Save\Badminton\" & sorted, "Lokale Speicherung")
 Call speichern("\\de.local\data\filetransfer\Huber\" & sorted, "Netzspeicherung")
 MsgBox mldg
End Sub

Sub speichern(savename As String, messi As String)
ActiveWorkbook.SaveAs Filename:=savename, FileFormat:=xlNormal, CreateBackup:=False
mldg = meldg & IIf(ThisWorkbook.FullName = savename, messi & " erfolgreich." & Chr(10) & Chr(10), messi & " gescheitert." & Chr(10) & Chr(10))
End Sub

Gruß
Reinhard

Hi Reinhard,

Du öffnest lokal, also ist sie ja dann wohl lokal vorhanden*g,
dann wird sie da ja auch gespeichert wie gewünscht!?
Aber sie wird dann nicht im Netz gespeichert wenn sie dort
schon ist?

nein nein, die ist nicht immer vorhanden…
ich öffne ja z.B. die Datei
Badminton 2006-01-09.xls
und sobald ich mein Makro starte speichert es eine neue Datei
Badminton 2006-01-12.xls (heute eben)

Kannst du mal eine Tabelle basteln mit allen 8 Möglichkeiten

GeöffnetIn Netzvorhanden lokalvorhanden lokalgespeichert
Netzgespeichert
lokal nein nein
lokal nein ja
lokal ja nein
lokal ja ja
Netz nein nein
Netz nein ja
Netz ja nein
Netz ja ja

ich versteh nicht so ganz…
im prinzip ist es immer das gleiche
da wo ich die Datei öffne, da wird sie auch gespeichert.
Auf dem anderen Ort aber nicht - ausser wenn es eine Datei mit diesem Namen noch nicht gibt…

Normalerweise würde ich erwarten, dass nachgefragt wird ob ich
die Datei überschreiben will, aber das geschieht nicht…
Worin liegt der Fehler?

DisplayAlerts ist True?

nicht explizit ausgeführt, nachdem aber für den ersten Pfad nachgefragt wird gehe ich davon aus, dass es true ist.
Aber ich werds nachher mal reinschreiben…

Diesen Code finde ich übersichtlicher:

Dim mldg As String
Sub backup_speichern2()
On Error Resume Next 'Fehler beim Verzeichniswechsel
verhindern…
'ChDir („D:_DATA“) ’ Ingos verzeichnis
ChDir („D:\Save\Badminton“) ’ Michis Verzeichnis
’ erstellen des Dateinamens
datum = Date
sorted = „Badminton_“ & Mid$(datum, 7, 4) & „-“ &
Mid$(datum, 4, 2) & „-“ & Mid$(datum, 1, 2) & „.xls“
Call speichern(„D:\Save\Badminton“ & sorted, „Lokale
Speicherung“)
Call speichern("\de.local\data\filetransfer\Huber" &
sorted, „Netzspeicherung“)
MsgBox mldg
End Sub

Sub speichern(savename As String, messi As String)
ActiveWorkbook.SaveAs Filename:=savename,
FileFormat:=xlNormal, CreateBackup:=False
mldg = meldg & IIf(ThisWorkbook.FullName = savename, messi & "
erfolgreich." & Chr(10) & Chr(10), messi & " gescheitert." &
Chr(10) & Chr(10))
End Sub

werd ich nachher gleich mal probieren…
danke dafür schon mal

Grüsse
Munich

argh, ich verstehs nicht…
Hi nochmal…

ich hab jetzt noch ein wenig rumprobiert…
und auch so wie Du es vorschlägst klappt es nicht.
Hab auch extra nochmal die Displayalerts = true gesetzt…

es ist trotzdem genauso wie davor…

ich hab dann nochmal ein Makro aufgezeichnet, das die beiden Dateien nacheinander speichert - mit festem Namen und festem Pfad - nur zum Test damit ich das ON ERROR rausnehmen konnte…
und schon wird mir eine Fehlermeldung angezeigt…
Ich frag mich nur: WARUM?

Wenn ich das Makro normal aufzeichne bekomme ich auch keine Warnung „Datei ist schreibgeschützt“ - alles funktioniert…
Aber wenn ich das Makro ausführe bekomme ich eben genau diese Warnung. Diese aber zweimal…

ich muss mal suchen wie ich prüfe, ob eine Datei schon vorhanden ist und diese dann vorher lösche… vielleicht klappt das dann ja… -.-

Danke

ok… gelöst…
ob gut oder nicht ist die Frage…

ich mach jetzt zusätzlich noch vorher einen chDrive auf das gemappte Netzlaufwerk bzw auf die lokale festplatte und lösche die Datei bevor ich sie speichere mit
kill (filename)
nu scheint es zu klappen…

Danke nochmal an Reinhard