AW: So, schau mal...
25.01.2004 22:56:26
Matthias G
Hallo Strutz (ist das eigentlich Dein Vorname?)
Ich habe das Makro etwas umgeschrieben, hier ist es:
Option Explicit
Const Anz_Ziffern = 4 'Datei heisst dann Sicherungxxx.xls
'(bei 3 Sicherungxxx.xls, usw)
Sub Sichern()
Dim Sicherungsdatei As String
Dim Anz, Neu As Integer
Dim Dummy As String
Application.ScreenUpdating = False
Sicherungsdatei = ErsteFreieDatei(ThisWorkbook.Path, "Sicherung", Anz_Ziffern)
On Error GoTo ok
Dummy = Workbooks(Sicherungsdatei).Name 'Abfrage zum Fehler erzeugen, wenn nicht vorhanden
'(Prüfung ist vielleicht nicht mehr nötig, schadet aber nichts ;-)
'kein Fehler = FEHLER: Datei schon vorhanden!
MsgBox "Sicherung kann nicht durchgeführt werden, da eine Datei mit Namen " & Sicherungsdatei & _
" schon geöffnet ist." & Chr(10) & _
"Schließen Sie diese Datei und wiederholen sie den Vorgang.", vbCritical, "Fehler bei der Sicherung"
Exit Sub
ok:
On Error GoTo 0
Anz = Workbooks.Count
Sheets("Tabelle1").Copy
Workbooks(Anz + 1).Activate
Cells.Copy
Cells.PasteSpecial xlPasteValues
Application.CutCopyMode = False
Range("A1").Select
ActiveWorkbook.SaveAs filename:=Sicherungsdatei
'Kopie drucken?
If MsgBox("Soll die Kopie gleich gedruckt werden?", vbYesNo + vbQuestion, Sicherungsdatei) = vbYes Then
ActiveSheet.PrintOut
End If
'Kopie schließen
ActiveWorkbook.Close
MsgBox "Kopie erfolgreich unter " & Sicherungsdatei & " gespeichert.", vbInformation, Sicherungsdatei
Application.ScreenUpdating = True
End Sub
'findet erste nicht exisierende Datei im Verz. Path mit Namen fn[xxxx].xls (Anzahl x in digits)
Function ErsteFreieDatei(Path As String, fn As String, digits As Integer) As String
Dim i As Long
Dim fo, filename As String
fo = String(digits, "0") 'Zahlenformat
For i = 1 To (10 ^ digits) - 1
filename = Path & "\" & fn & Format(i, fo) & ".xls"
If Dir(filename) = "" Then Exit For
Next i
ErsteFreieDatei = filename
End Function
Ich habe hier das Format Sicherungxxxx.xls gewählt, du kannst also 9999 Kopien machen, anschl. gibt es wohl Makrofehler...
Wenn du mehr willst, erhöhe einfach die Konstante Anz_Ziffern...
Viel Erfolg und Viel Spaß noch,
Matthias
P.S. Es wäre vielleicht besser, wenn der Name der Sicherungskopie sich am Erstelldatum orientieren würde? also z.B. Sicherung_04_01.xls für Sicherung im Januar 04, oder Sicherung_04_01_12__16-21.xls für die Sicherung am 12.1.2004 um 16:21, wie findest du das?