09. oktober 2008 - 22:41Der er
12 kommentarer og 1 løsning
Slette filer på disken fra access
Hej alle eksperter
Jeg har en mappe som indeholder filer hvor navn f.eks. er, data 031008, data 041008, data 051008, data 061008, data 071008, data 081008, jeg kunne godt tænke mig at slette de sidste 5 filer (efter dato) er det muligt fra access og hvordan.
The required pathname argument is a string expression that specifies one or more file names to be deleted. The pathname may include the directory or folder, and the drive.
Har ingen erfaring med det, men ved dog at kommandoen hedder Kill. Hentet fra hjælpen:
Remarks
In Microsoft Windows, Kill supports the use of multiple-character (*) and single-character (?) wildcards to specify multiple files. However, on the Macintosh, these characters are treated as valid file name characters and can't be used as wildcards to specify multiple files.
Since the Macintosh doesn't support the wildcards, use the file type to identify groups of files to delete. You can use the MacID function to specify file type instead of repeating the command with separate file names. For example, the following statement deletes all TEXT files in the current folder.
Kill MacID("TEXT")
If you use the MacID function with Kill in Microsoft Windows, an error occurs.
An error occurs if you try to use Kill to delete an open file.
Note To delete directories, use the RmDir statement.
Jeg går ud fra, at du med "de sidste 5 filer" mener dem med den højeste dato. Her er VBA koden:
Sub SletFiler() Const AntalSletninger = 5 Dim Mappe As String Dim d As String Dim Dato As Date Dim MaxDato As Date Dim Filnavn As String Dim i As Integer
Mappe = "C:\Temp\DinMappe\"
For i = 1 To AntalSletninger MaxDato = #12/24/2000# d = Dir(Mappe & "data *") Do Dato = DateSerial(Mid(d, 10, 2), Mid(d, 8, 2), Mid(d, 6, 2)) If Dato > MaxDato Then MaxDato = Dato d = Dir Loop Until d = "" Debug.Print MaxDato Filnavn = "data " & Format(MaxDato, "ddmmyy") Kill (Mappe & Filnavn) Next i End Sub
(husk lige backup af filerne inden du slipper koden løs!)
Den skal lade de sidste 5 filer ligge. Altså slette, data 031008, og lade resten blive, altså data 041008, data 051008, data 061008, data 071008, data 081008. Hvis der ligger <6 filer, skal den ikke slette noget.
Tjah, det var jo så lige det stik modsatte; men så spejlvender vi bare logikken:
Sub SletFiler() Dim Mappe As String Dim d As String Dim Dato As Date Dim MinDato As Date Dim Filnavn As String Dim i As Integer Dim AntalFiler As Integer Dim AntalSletninger As Integer
Mappe = "C:\Temp\DinMappe\"
AntalFiler = 0 d = Dir(Mappe & "data *") Do AntalFiler = AntalFiler + 1 d = Dir Loop Until d = ""
AntalSletninger = AntalFiler - 5 If AntalSletninger <= 0 Then Exit Sub
For i = 1 To AntalSletninger MinDato = #12/24/2020# d = Dir(Mappe & "data *") Do Dato = DateSerial(Mid(d, 10, 2), Mid(d, 8, 2), Mid(d, 6, 2)) If Dato < MinDato Then MinDato = Dato d = Dir Loop Until d = "" Filnavn = "data " & Format(MinDato, "ddmmyy") Kill (Mappe & Filnavn) Next i End Sub
Sorry. Min fejl. Jeg antog ud fra dit spørgsmål, at der altid var mere end 5 filer i mappen. Det er der tilsyneladende ikke.
Ny kode (ikke testet):
Sub SletFiler() Dim Mappe As String Dim d As String Dim Dato As Date Dim MinDato As Date Dim Filnavn As String Dim i As Integer Dim AntalFiler As Integer Dim AntalSletninger As Integer
Mappe = "C:\Temp\DinMappe\"
AntalFiler = 0 d = Dir(Mappe & "data *") Do Until d = "" AntalFiler = AntalFiler + 1 d = Dir Loop
If AntalFiler<6 Then MsgBox "Der er intet at slette", vbInformation, "Fundet: " & AntalFiler & " filer" Exit Sub End If
AntalSletninger = AntalFiler - 5 If AntalSletninger <= 0 Then Exit Sub
For i = 1 To AntalSletninger MinDato = #12/24/2020# d = Dir(Mappe & "data *") Do Until d = "" Dato = DateSerial(Mid(d, 10, 2), Mid(d, 8, 2), Mid(d, 6, 2)) If Dato < MinDato Then MinDato = Dato d = Dir Loop Filnavn = "data " & Format(MinDato, "ddmmyy") Kill (Mappe & Filnavn) Next i End Sub
Hm. Jeg er lidt lost her. Det må være muligt for dig at tjekke, om filen findes eller ej. Hvis du skyder en linie med Debug.Print Mappe, Filnavn ind før Kill, kan du se mappen og filnavnet i Immediate vinduet (Ctrl-G). Det skulle jo meget gerne svare til stien og navnet på en af dine filer.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.