VBA - Mappe speichern + Backup
#31
Ich nochmal,

ich nähere mich meiner Lösung - Schritt für Schritt....

Habe nun zwei Codes, die ich zusammenbauen müsste und benötige noch einmal eure Hilfe dabei.

Code 1 löscht zuverlässig das älteste File...
Code:
Sub Delete_oldest_File()
Dim FSO, f, fi
Dim MinDateCreated As Date: MinDateCreated = 99999

Set FSO = CreateObject("Scripting.FileSystemObject")
Set f = FSO.GetFolder(Environ("UserProfile") & "\Desktop\Testordner")
For Each fi In f.Files
 If fi.DateCreated < MinDateCreated Then MinDateCreated = fi.DateCreated
Next
For Each fi In f.Files
 If fi.DateCreated = MinDateCreated Then FSO.DeleteFile fi
Next
End Sub


Code 2 zählt die Files

Code:
Sub DateienZaehlen()
   Dim strOrdnerName As String
   Dim strName As String
   Dim intz As Integer
 
       strOrdnerName = "C:\Users\Desktop\Testordner\"
       strName = Dir(strOrdnerName & "*.*")
     
       Do While strName <> ""
           strName = Dir
           intz = intz + 1
       Loop
     
       MsgBox "Anzahl der Dateien: " & intz
End Sub


Hier noch mit Msg-Box als Ausgabe. Ich habe versucht, die beiden Codes zusammenzufrickeln, allerdings gelingt es mir nicht. Bevor ich weiter auf F5 zum Auslösen hämmere und ich keine Rückmeldung bekomme, was ich gerade lösche bzw ob überhaupt etwas gelöscht wird bitte ich nochmal um  eure Hilfe.

Hier mein Versuch:
Code:
Sub DateienZaehlen()
   Dim strOrdnerName As String
   Dim strName As String
   Dim intz As Integer
   Dim FSO, f, fi
   Dim MinDateCreated As Date: MinDateCreated = 99999

   Set FSO = CreateObject("Scripting.FileSystemObject")
   Set f = FSO.GetFolder(Environ("UserProfile") & "\Desktop\Testordner")
 
       strOrdnerName = "C:\Users\***\Desktop\Testordner"
       strName = Dir(strOrdnerName & "*.*")
     
       Do While strName <> ""
           strName = Dir
           intz = intz + 1
       Loop
     
       'MsgBox "Anzahl der Dateien: " & intz
   If intz > 2 Then
       For Each fi In f.Files
       If fi.DateCreated < MinDateCreated Then MinDateCreated = fi.DateCreated
       Next
       For Each fi In f.Files
   If fi.DateCreated = MinDateCreated Then FSO.DeleteFile fi
   Next
   End If
End Sub

Wenn ich das Makro ausführe, passiert gar nix ... es wird aber auch kein Fehler angezeigt. Wenn ich mich recht erinnere, kann ich die eine Prozedur nicht auch als Function innerhalb der anderen ausführen lassen?! Muss ich die Variable intz dann als globale Variable definieren? Leider bekomme ich das nicht hin :(

Gruß und danke
Top
#32
Hallo,

hast Du denn schon mal, wie von mir vorgeschlagen, die Dateinamen auf ein Blatt gebracht?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#33
Hi schauan,

ich wollte dir noch Rückmeldung geben. Ja ich habe das ausprobiert ... allerdings verstehe ich den Mehrwert nicht. Vielleicht kannst du mir das erklären. Am liebsten soll er das älteste File löschen, ohne die Mappe vollzuschreiben. Ich habe es nun geschafft, die beiden Codes mit if intz > 30 then .call sub delete_oldest_file zusammenzuführen. Soweit klappt das gut :)

Gruß
Top
#34
Hallo Easy,

wenn Du nur das älteste File löschen willst, brauchst Du meinen Ansatz nicht. Du wolltest Anfangs ja eine bestimmte Anzahl Files behalten ..
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#35
ja richtig... Wenn ich korrekt getestet habe wird das löschmakro bei mir nur ausgeführt ,wenn mehr als "30" Dateien vorhanden sind.. .Von daher passt es doch. Er behält "30" Dateien und löscht die älteste . .Oder vertue ich mich?
Top
#36
Hallöchen,

wenn es passt, ist alles gut Smile Nur, wenn Du aus irgend einem Grund mal ein paar mehr als 30 bekommen hast, bleibt es bei ein paar mehr. Aber da braucht man sich nicht so verrenken, das kann man auch zwischendurch mal manuell korrigieren Smile Ist auf jeden Fall gut, wenn man da selber was entwickelt hat und da auch nachvollziehen kann, was genau passiert.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • EasY
Top
#37
Ah verstehe worauf du hinaus willst.. ..du hast recht. Aber wenns 31 werden (wovon ich nicht ausgehe, weil in dem Ordner eigentlich keiner rumfuhrwerken soll) dann führt er denn befehl beim Speichern einfach immer aus. Damit kann ich leben. 
Schlimmer war die ursprüngliche von mir nicht gebastelte Lösung bei der beim Speichern IMMER eine Backup erstellt wurde.... Bei locker 10 Zugriffen pro Tag ganz schön speicherintensiv irgendwann.
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste