Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
676to680
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
676to680
676to680
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Dateien löschen bei bestimmte MB Größe

Dateien löschen bei bestimmte MB Größe
07.10.2005 10:30:49
Andre
Hallo alle zusammen,
ich habe Excel Dateien, wo ich täglich per Makro Dateien bearbeite und in einen bestimmten Ordner speicher. Um das Laufwerk nicht zu überlasten möchte ich gern erreichen, dass beim überschreiten einer festgesetzten MB Größe für den Ordner Test1 die älteste Datei gelöscht wird.
Hier ist mein speicher Makro:

Sub Speichern()
Dim ordner As String
ordner = "C:\Test1\" & Year(Date) & Month(Date)
On Error Resume Next
MkDir ordner
ActiveWorkbook.SaveAs Filename:= _
ordner & "\Test1 " & Str(Date) + " " + Mid(Time, 1, 2) + "_" + Mid(Time, 4, 2) + "_" + Mid(Time, 7, 2) & ".xls" _
, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
End Sub

Kann mir vielleicht jemand helfen.
MFG
Andre

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateien löschen bei bestimmte MB Größe
07.10.2005 10:42:55
Harald
hallo Andre,
der Pfad steht in B1 (ggf. anpassen)
StandardModule: Modul1

Sub DateiLöschen()
Dim sPath As String
Dim iCount As Integer, iCounter As Integer
sPath = Range("B1").Value 'Pfadangabe
If MsgBox("Sollen die Dateien tatsächlich gelöscht werden?", _
vbCritical + vbYesNo) = vbNo Then Exit Sub
iCount = 30
With Application.FileSearch
.LookIn = sPath
.Filename = "*.xls"
.Execute
For iCounter = 1 To .FoundFiles.Count
If FileDateTime(.FoundFiles(iCounter)) + 30 < Date Then
Kill .FoundFiles(iCounter)
End If
Next iCounter
End With
End Sub

Der Code stammt von der famosen Herber Excel-CD und die kann ich nur wärmstens empfehlen.
Gruß
Harald
Anzeige
AW: Dateien löschen bei bestimmte MB Größe
07.10.2005 10:56:17
Fred
Hi,
geht aber an der Frage vorbei, es möchte nach Größe löschen, nicht nach Datum.
Ob er das bei "VBA nur mit Rekorder" anpassen kann?
mfg Fred
Berechtigter Einwand ;-))
07.10.2005 11:20:31
Harald
Danke Fred.
Assoziationsfehler meinerseits, da ich immer nur ältere Dateien lösche/zippe.
Bitte noch FileLen (=Dateigröße) wunschgemäß anpassen

Sub DateiLöschen()
Dim sPath As String
Dim iCount As Integer, iCounter As Integer
sPath = Range("B1").Value
If MsgBox("Sollen die Dateien tatsächlich gelöscht werden?", _
vbCritical + vbYesNo) = vbNo Then Exit Sub
iCount = 30
With Application.FileSearch
.LookIn = sPath
.Filename = "*.xls"
.Execute
For iCounter = 1 To .FoundFiles.Count
If FileLen(.FoundFiles(iCounter)) > 50000 Then 'größer 50 KB
Kill .FoundFiles(iCounter)
End If
Next iCounter
End With
End Sub

HIer noch eine Möglichkeit, sich die Dateigröße anzeigen zu lassen.

Sub Makro1()
on error goto fehler
anzeige = FileLen("C:\Eigene Dateien\Musterdatei.xls")
MsgBox anzeige
exit sub
fehler:
msgbox "Datei nicht gefunden"
End Sub

Gruß
Harald
Anzeige
AW: Berechtigter Einwand ;-))
07.10.2005 11:31:48
Andre
Hallo,
danke für die Antworten
mein speichere Makro bewirkt, dass auf C:\Test1\ jeweils für das entsprechende Kalenderjahr mit dem entsprechenden Monat ein Ordner erstellt wird, wo dann die Datei Test1 erstellt wird. Da die Dateigröße ca 200 KB/ Datei beträgt, könnte ich mir auch vorstellen, dass das Löschmakro bei einer bestimmten Anzahl (z.B. 500) an Dateien die älteste Datei gelöscht wird. Problem: der Pfad ändert sich von Monat zu Monat.
MFG
Andre
Frage
07.10.2005 12:24:05
Harald
Hi nochmal,
wäre das erste Mal, dass ich mich an so einem Brocken versuche. Dazu fehlt mir leider die Zeit. Daher lasse ich offen.
Allerdings,
wenn dir lediglich die Dateigröße Sorgen macht, die benötigten Daten auf einem Blatt stehen und das Speichern hauptsächlich der Archivierung dient, hab ich ne Alternative im Köcher.
Ich hab nen feinen Code, der das benötigte Blatt als Textdatei abspeichert. Bei Interesse einfach winken.
Viel Erfolg
Harald
Anzeige
Problem noch nicht gelöst
07.10.2005 13:07:52
Andre
Hi Harald und alle Excelaner
schein wirklich ein großer Brocken zu sein
Harald, dein Code für die Textdadei hift mir nicht weiter. Es müste doch möglich sein nach sPath = "C:\Test1" die enthaltenen Unterordner mit einzubeziehen auf Dateien die älter als 5 Tage sind. Blos wie!?.

Sub DateiLöschen()
Dim sPath As String
Dim iCount As Integer, iCounter As Integer
sPath = "C:\Test1"
'sPath = Range("B1").Value 'Pfadangabe
If MsgBox("Sollen die Dateien tatsächlich gelöscht werden?", _
vbCritical + vbYesNo) = vbNo Then Exit Sub
iCount = 5
With Application.FileSearch
.LookIn = sPath
.Filename = "*.xls"
.Execute
For iCounter = 1 To .FoundFiles.Count
If FileDateTime(.FoundFiles(iCounter)) + 5 < Date Then
Kill .FoundFiles(iCounter)
End If
Next iCounter
End With
End Sub

Würde mich für alle Antworten sehr freuen.
MFG
Andre
Anzeige
AW: Problem noch nicht gelöst
07.10.2005 13:18:23
Harald
Hmmm, also ich hab die HerberCD nochmal durchstöbert und folgendes gefunden.
.SearchSubFolders = True
und habs mal eingepflegt.
Testen darfste aber selbst ;-))

Sub DateiLöschen()
Dim sPath As String
Dim iCount As Integer, iCounter As Integer
sPath = "C:\Test1"
'sPath = Range("B1").Value 'Pfadangabe
If MsgBox("Sollen die Dateien tatsächlich gelöscht werden?", _
vbCritical + vbYesNo) = vbNo Then Exit Sub
iCount = 5
With Application.FileSearch
.LookIn = sPath
.SearchSubFolders = True
.Filename = "*.xls"
.Execute
For iCounter = 1 To .FoundFiles.Count
If FileDateTime(.FoundFiles(iCounter)) + 5 < Date Then
Kill .FoundFiles(iCounter)
End If
Next iCounter
End With
End Sub

Viel Erfolg
Harald
Anzeige
DANKE!!! Genau das war es
07.10.2005 14:00:31
Andre
Hi Harald,
tausend DANK!!!Funktioniert prima
wünsche dir ein schönes Wochenende
MFG
Andre
Danke für die Rückmeldung
07.10.2005 15:46:34
Harald
und ebenfalls ein schönes WE
Harald

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige