PDA

Vollständige Version anzeigen : Erstellen einer Kopie bei Speichern


Stibizi
01.07.2014, 12:15
Hallo Leute,

ich hab ein für euch wahrscheinlich sehr schnell zu lösendes Problem.
Da ich aber absoluter Grünschnabel bin was makros anbelangt brauche ich eure Hilfe.

Ich hätte gerne, dass beim Speichern einer Tabelle automatisch eine Kopie der gespeicherten Tabelle in einem anderen Ordner erstellt wird.

Wie kriege ich das hin?

Schonmal vielen Dank für eure Hilfe

viele Grüße
Dominik

Hajo_Zi
01.07.2014, 12:24
Hallo Dominik,
starte den VBA Editor (Alt+F11), Bild sollte zweigeteilt sein ansonsten Strg+R, Doppelklick auf Deine Datei, Doppelklick auf DieseArbeitsmappe, Code ins rechte Fenster kopieren, VBA Editor schließen.
Das Makro wird automatisch gestartet.
Der Code wirkt in der gesamten Datei.
Option Explicit ' Variablendefinition erforderlich

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'***********************************************
'* H. Ziplies *
'* 07.04.2011 *
'* erstellt von HajoZiplies@web.de *
'* http://Hajo-Excel.de/ *
'***********************************************
Dim StDatei As String ' Variable für Dateinamen
Dim StPhad As String ' Variable für Pfad
StDatei = ThisWorkbook.Name ' Dateiname auf Variable schreiben
StPhad = ThisWorkbook.Path ' Pfad auf Variable schreiben
Dim StDateiV As String ' Dateiname Neu
' überprüfen ob Sicherheitskopie schon vorhanden
' nur notwendig falls Datei in der selben Minute nochmal geöffnet wird
' von Berti Koern
Dim Fso As Object
StDateiV = Format(Now, "YY-MM-DD") & "_" & Format(Now, "hh-mm") & "_" & StDatei
Set Fso = CreateObject("Scripting.FileSystemObject")
If Fso.FileExists(StPhad & "\" & StDateiV) Then
' vorhandene Arbeitsmappe löschen, wird nicht in den Papierkorb verschoben
Kill StPhad & "\" & StDateiV
End If
' ****
' es werden als Trennzeichen keine Punkte verwendet
' ich bin der Auffassung im Dateinamen sollte es nur einen Punkt geben
' die Reihenfolge Jahr, Monat und Tag hat den Vorteil,
' die Sicherungen von folgenden Tagen stehen im Windows Explorer hintereinander
ActiveWorkbook.SaveCopyAs FileName:=StPhad & "\" & StDateiV
End Sub

mal ungetestet.

<img src="http://Hajo-Excel.de/images/grusz1.gif" align="middle" height="40" alt="Grußformel"><a href="http://Hajo-Excel.de/index.htm"><img border="0" src="http://Hajo-Excel.de/images/logo_hajo3.gif" align="middle" height="40" alt="Homepage"></a>

Hasso
01.07.2014, 12:28
Hallo Stibizi,

mit Googles Hilfe findest du massig Lösungen. Zum Beispiel diese:Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
With Application
.EnableEvents = False
.DisplayAlerts = False
ThisWorkbook.SaveCopyAs ThisWorkbook.Path & _
"\Sicherheitskopien\Sicherheitskopie Testmappe vom " & _
Format(Date, "yyyy_mm_dd") & ".xls"
.DisplayAlerts = True
.EnableEvents = True
End With
End Sub

Den roten Teil müsstest du auf deine Wünsche anpassen.

Stibizi
01.07.2014, 12:32
@Hajo

Genial. Dein Vorschlag funktioniert schon mal. :D
vielen Dank

nur eine Frage habe ich noch.
wie kann ich den Speicherort ändern für die Kopie?
Was trage ich da wo ein?

Hajo_Zi
01.07.2014, 12:35
man sollte sich schon den Code ansehen?
StPhad = ThisWorkbook.Path ' Pfad auf Variable schreiben

<a href="http://Hajo-Excel.de/index.htm" target="_blank" title="Hajo's Excelseiten">Gruß Hajo</a>

Stibizi
01.07.2014, 12:36
Und am besten soll nicht jedesmal eine neue Datei mit neuem Datum abgespeichert werden sondern die alte kopie einfach überschrieben werden.

D.h. ich hätte gerne einen Speicherort, wo immer nur die aktuelle Kopie der Tabelle ist, die auch immer den selben Namen hat

Hajo_Zi
01.07.2014, 12:39
du liest meine Beiträge also nicht. Ich bin dann raus.
StDateiV = Format(Now, "YY-MM-DD") & "_" & Format(Now, "hh-mm") & "_" & StDatei


<a href="http://Hajo-Excel.de/index.htm" target="_blank" title="Hajo's Excelseiten">Gruß Hajo</a>

Stibizi
01.07.2014, 13:02
ich les deine Beiträge schon. Ich versteh nur absolut 0 von VBA :(

wie muss ich die Zeile

StDateiV = Format(Now, "YY-MM-DD") & "_" & Format(Now, "hh-mm") & "_" & StDatei

abändern, damit die datei immer unter den selben Namen gespeichert wird und dabei die alte Datei überspielt?

Hasso
01.07.2014, 13:16
Hallo Stibizi,

so:StDateiV = StDatei