Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1852to1856
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

SaveCopyAs KW- geschützte Mappe

SaveCopyAs KW- geschützte Mappe
26.10.2021 15:52:36
Berny
Hallo VBA Speziallisten
ich habe eine Mappe, welche ich mit Kennwort geschützt habe.
Für diese Mappe will ich, via VBA, regelmäßig eine Sicherungskopie in einem anderen Pfad ablegen.
ThisWorkbook.SaveCopyAs Pfad & WBN
Im Prinzip funktioniert das auch. Aber leider nur 1 mal.
Beim zweiten Versuch kommt es zu einem Fehler. Sinngemäß: "Datei schon vorhanden."
Wenn ich das Kennwort entferne, kann ich die Mappe immer wieder überschreiben.
Nun habe ich mir geholfen, indem ich die Mappe vorher entferne.
Kill Pfad & WBN
Aber irgendwie gefällt mir die Lösung nicht.
Hat jemand eine "saubere" Lösung
M.f.G.
Berny

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

Betreff
Datum
Anwender
Anzeige
AW: SaveCopyAs KW- geschützte Mappe
26.10.2021 16:06:50
Werner
Hallo,
schon mal versucht vor der Codezeile mit der du speicherst Application.DisplayAlerts = False zu arbeiten. Da wird die vorhandene Datei ohne Rückfrage überschrieben.
Gruß Werner
AW: SaveCopyAs KW- geschützte Mappe
26.10.2021 16:53:10
Berny
Hallo Werner,
Danke für den Hinweis, das habe ich jetzt gleich probiert. Ich bekomme trotzdem die Meldung Laufzeitfehler 1004 . ...
was aber kurios ist, wenn ich auf "Debuggen" klicke und dann das Makro fortsetze, ist der Fehler weg und die Datei wird gespeichert.
Noch verrückter wird es, wenn ich in der Meldung des Laufzeitfehler auf "Beenden" klicke. Dann wird meine bisherige Sicherungskopie im Ordner entfernt.
Das hatte ich auch noch nicht.
M.f.G.
Berny
Anzeige
AW: SaveCopyAs KW- geschützte Mappe
27.10.2021 11:31:02
Yal
Hallo Berny,
schön, deine Beobachtung zu lesen. Aber Du redest über etwas, das wir weder sehen noch nachbilden können.
Wenn Du die Konversation aufrecht erhalten möchtest (und die Chance auf eine Lösung erhöhen), solltest Du eine anonymisierte und trotzdem aussagekräftige Beispieldatei hochladen.
VG
Yal
AW: SaveCopyAs KW- geschützte Mappe
27.10.2021 13:30:03
Berny
Hallo Yal,
ich war eigentlich der Meinung, dass ich mein Problem hinreichend beschrieben habe, aber wenn es uns weiterhilft, hier mein Modul.
Dateien mit Makro Inhalt will ja keiner öffnen.
Private WBN As String 'Workbookname
Private WBA As String 'Workbook Erweiterung
Private Pfad As String 'Zielpfad für Sicherungskopie
Private ZS_1 As String 'Zusatz 1 für Sicherungsname
Private ZS_2 As String 'Zusatz 2 für Sicherungsname

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Mit folgendenMakro wird eine Sicherungskopie pro Tag erzeugt. Innerhalb eies Tages wird die Sicherung überschrieben.
Pfad = "C:\Temp\"    'hier den Pfad eingeben, wo die Sicherung gespeichert werden soll
WBN = Left(ThisWorkbook.Name, InStr(1, ThisWorkbook.Name, ".") - 1) 'Dateiname ohne Extension
WBA = Right(ThisWorkbook.Name, Len(ThisWorkbook.Name) - InStr(1, ThisWorkbook.Name, ".") + 1) 'Datei Extension
ZS_1 = Environ("Username")  'gibt den Windows » de- User « zurück
ZS_2 = Format(Now, " YY_MM_DD") 'gibt die aktuelle Zeit im Format Jah_Monat_Tag
'Die folgende Zeile ist nur bei Dateien mit Passwortschutz notwendig
'If Dir(Pfad & WBN & ZS_1 & ZS_2 & WBA)  "" Then Kill Pfad & WBN & ZS_1 & ZS_2 & WBA
'Application.DisplayAlerts = False
ThisWorkbook.SaveCopyAs Pfad & WBN & ZS_1 & ZS_2 & WBA
'Application.DisplayAlerts = True
End Sub
Das Makro funktioniert solange die Mappe kein Kennwort hat.
Wurde die Mappe mit Kennwort gespeichert, funktioniert das Makro 1x danach kommt es zu einem Fehler.
M.f.G.
Berny
Anzeige
AW: SaveCopyAs KW- geschützte Mappe
27.10.2021 23:07:14
Yal
Hallo Berny,
SaveCopyAs hat keine Option "Overwrite := True / False". Daher wird es bei einer vorhandenen Datei immer zicken.
Also der Kill muss drin sein. Es kostet eh keine Performance.
Man könnte ein paar Variable sparen. Deren Zusammenfassung wird wiederum mehrmals verwendet. Da lohnt sich eine Variable.
With ermöglicht die Wiederholung von was vor dem Punkt steht (in dem Fall ThisWorkbook.Name, ThisWorkbook.SaveCopyAs)
Die Trennung auf dem Punkt, kann auch mit Split erzeugt werden.
Datum in umgekehrte Folge YMD ist für Sortierung ja sinnvoll. Persönlich habe ich das Jahr lieber 4-stellig. Geschmacksache.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim DateiPfad As String
Const cPfad = "C:\Temp\"
'Mit folgenden Makro wird eine Sicherungskopie pro Tag erzeugt. Innerhalb eines Tages wird die Sicherung überschrieben.
'Application.DisplayAlerts = False
With ThisWorkbook
DateiPfad = cPfad & Split(.Name, ".")(0) & Environ("Username") & Format(Now, " YY_MM_DD") & Split(.Name, ".")(1)
If Dir(DateiPfad)  "" Then Kill DateiPfad
.SaveCopyAs DateiPfad
End With
'Application.DisplayAlerts = True
End Sub
VG
Yal
Anzeige

82 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige