3.1k Aufrufe
Gefragt in Tabellenkalkulation von noldi Mitglied (477 Punkte)
Hallo zusammen

Habe folgendes Makro.


Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call Ende
End Sub

Private Sub Workbook_Deactivate()
Call Ende
End Sub

Private Sub Workbook_Open()
Call Bedingungen

Dim StDatei As String
Dim StPhad As String
StDatei = ThisWorkbook.Name
StPhad = ThisWorkbook.Path

Dim Fso As Object
Set Fso = CreateObject("Scripting.FileSystemObject")
If Fso.FileExists(StPhad & "\" & Format(Now, "DD-MM-YY") & "_" &
Format(Now, "hh-mm") & "_" & StDatei) Then
' vorhandene Arbeitsmappe löschen, wird nicht in den Papierkorb
verschoben
Kill StPhad & "\" & Format(Now, "DD-MM-YY") & "_" &
Format(Now, "hh-mm") & "_" & StDatei
End If
' ****
' es werden als Trennzeichen keine Punkte verwendet
' ich bin der Auffasung im Dateinamen sollte es nur einen Punkt
geben
' die Reihenfolge Jahr, Monat und Tag hat den Vorteil, die
Sicherungen von folgenden Tagen stehen hintereinander
ActiveWorkbook.SaveCopyAs Filename:=StPhad & "\" &
Format(Now, "DD-MM-YY") & "_" & Format(Now, "hh-mm") & "_" &
StDatei
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean,
Cancel As Boolean)
ActiveCell.Interior.ColorIndex = AlteFarbe
End Sub

Wie muss das Makro aussehen wenn das Backup nicht im gleichen
Ordner abgespeichert werden soll? Es sollte in einen Separaten
Ordner z.B. Sicherung gespeichert werden.
Ich habe keinen Plan von VBA.

Danke

Gruß Noldi

5 Antworten

0 Punkte
Beantwortet von
Hi,

Da der Code den Du hier postest nicht vollständig ist, und da Du nicht sagst wo das Sicherungsverzeichnis nun genau liegen soll, nur ein paar Ansätze für eine Lösung:

- Soll das Sicherungsverzeichnis völlig unabhängig vom Speicherort der betroffenen Datei sein, kannst Du die Zeile StPhad = ThisWorkbook.Path z.B. ändern wie folgt:
StPhad = "C:\Ordner\Unterordner\Sicherung"

- Soll die Sicherung in einem Unterverzeichnis des Herkunftverzeichnisses liegen, könnte man die Zeile ändern wie folgt:
StPhad = ThisWorkbook.Path & "\Sicherung"

Bei beiden Versionen ist es mit obigem Code zwingend notwendig, dass das jeweilige Verzeichnis vor der Ausführung bereits existiert.

bye
malSchauen
0 Punkte
Beantwortet von
Hallo Noldi,
hier ein paar Makros die dir vielleicht weiter helfen.
Gruß
fedjo

Speicherung erfolgt mit Datum.
Pfand ändern und Ordner Sicherung anlegen.


Sub Sicherung()
Dim FName As String
Dim OldComment As String
'Name für die Sicherungskopie aus dem Namen der Originaldatei bilden
FName = Left(ActiveWorkbook.Name, _
InStr(ActiveWorkbook.Name, ".")) & _
"(Sicherung).xls"
'Pfad ändern
ActiveWorkbook.SaveCopyAs Filename:="C:\Dokumente und Einstellungen\Admin\Desktop\Sicherung\" & Date & " " & FName
End Sub

Speicherung erfolgt ohne Datum, vorhandene Datei wird überschrieben.
Pfand ändern und Ordner Sicherung anlegen.

Sub Backup()
Dim FName As String
Dim OldComment As String
'Name für die Sicherungskopie aus dem Namen der Originaldatei bilden
FName = Left(ActiveWorkbook.Name, _
InStr(ActiveWorkbook.Name, ".")) & _
"(Backup).xls"
'Pfad ändern
ActiveWorkbook.SaveCopyAs Filename:="C:\Dokumente und Einstellungen\Admin\Desktop\Sicherung\" & FName
End Sub
0 Punkte
Beantwortet von noldi Mitglied (477 Punkte)
Hallo zusammen

Danke für Eure Lösungsvorschläge.

Ich habe den Lösungsvorschlag von fedijo genommen, und
funktioniert super

Euch einen guten Rutsch ins Jahr 2010.

Danke

Gruß Noldi
0 Punkte
Beantwortet von noldi Mitglied (477 Punkte)
Hallo fedijo

Ich habe nun doch noch mal eine Frage zu dem folgendem Makro


Sub SicherungDiensplan()
Dim FName As String
Dim OldComment As String
'Name für die Sicherungskopie aus dem Namen der Originaldatei
bilden
FName = Left(ActiveWorkbook.Name, _
InStr(ActiveWorkbook.Name, ".")) & _
"(D - N - 2010).xls"
'Pfad ändern
ActiveWorkbook.SaveCopyAs Filename:="C:\Dokumente und
Einstellungen\Landauer\Desktop\Betrieb\Dienstplan\Sicherung
Dienstplan\" & Date & " " & FName
End Sub

Speichert dieses Makro nicht Automarisch ein Backup meiner
Datei? Oder habe ich falsche Werte eingegeben?
Meine Originaldatei heißt D - N - 2010.

Danke für einen weitern Tipp.

Gruß Noldi
0 Punkte
Beantwortet von fedjo Experte (2.2k Punkte)
Hallo Noldi,
ich sehe in dem Makro jetzt keinen Fehler, wenn deine Ordner
(Pfad; Dokumente und Einstellungen\Landauer\Desktop\Betrieb\Dienstplan\SicherungDienstplan)
auch so alle existieren.

Automatisch wird das Makro nicht gestartet.
Es gibt aber verschiedene Möglichkeiten Makros automatisch ausführen zu lassen.
(z.B. Arbeitsmappe öffnen schließen, Tabelle aktivieren deaktivieren oder Zeit Datum)

Gruß
fedjo


Sub SicherungDiensplan()
Dim FName As String
Dim OldComment As String
'Name für die Sicherungskopie aus dem Namen der Originaldatei bilden
FName = Left(ActiveWorkbook.Name, _
InStr(ActiveWorkbook.Name, ".")) & _
"(D - N - 2010).xls"
'Pfad ändern
ActiveWorkbook.SaveCopyAs Filename:="C:\Dokumente und Einstellungen\Landauer\Desktop\Betrieb\Dienstplan\SicherungDienstplan\" & Date & " " & FName
End Sub
...