Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Dateien löschen

Betrifft: Dateien löschen
von: Felix
Geschrieben am: 22.04.2003 - 12:04:07

Hallo Excelfreunde,
ich möchte in einem Verzeichnis "C:\test" Dateien löschen.

Ich möchte immer die 3 Dateien mit dem größten Datum erhalten lassen.

Alle weiteren Dateien sollen gelöscht werden.
(Der Dateiname setzt sich aus Datum & test zusammen)

Die Dateien heißen z.B.:
07_01_00_test.xls (soll gelöscht werden)
08_01_00_test.xls (soll gelöscht werden)
09_01_00_test.xls (soll nicht gelöscht werden)
10_01_00_test.xls (soll nicht gelöscht werden)
11_01_00_test.xls (soll nicht gelöscht werden)

Besonderheit:
Die Dateien die nicht "test" heißen, dürfen auch nicht gelöscht werden!!!!

z.B. Angaben.xls (soll nicht gelöscht werden)

Kann mir jemand sagen wie ich das bewerkstelligen kann?????


Gruß
Felix





  

Re: Dateien löschen
von: Martin Beck
Geschrieben am: 22.04.2003 - 12:38:58

Hallo Felix,

auf die Schnelle nur ein paar allgemeine Anregungen:

1. Falls Du Dateien aus mehreren Jahren hast, solltest Du Sie nach einer anderen "Logik" benennen, damit eine vernünftige Sortiermöglichkeit besteht. Also statt

11_01_00_test.xls

00_01_11_test.xls (allgemein: yy_mm_dd_test.xls)


2. Schreibe alle Dateinamen, die "test" enthalten, in ein Array.

3. Sortiere den das Array absteigend, z.B. mit einem sog. "Bubblesort".

4. Lösche alle Dateien außer den letzten 3 im Array.


Hilfe zur Umsetzung findest Du in der Recherche. Suche mal nach Bubblesort, "Datei öffnen" etc.

Gruß
Martin Beck

  

Re: Dateien löschen
von: Felix
Geschrieben am: 22.04.2003 - 12:56:06

Vielen Dank, Martin,

Mal sehen ob ich das hinbekomme.

Gruß
Felx

  

Re: Dateien löschen
von: Martin Beck
Geschrieben am: 22.04.2003 - 13:14:13

Hallo Felix,

wenn Du weitere Hilfe benötigst, bitte in diesem Thread nachfragen. Ich habe noch Code für den Bubblesort und das Auslesen von Dateien gefunden, mit dem Du vielleicht weiterarbeiten kannst:


Sub Bubblesort()
Dim arr(100, 2)
Dim zwi

'Befüllen des Arrays. In Zellen A1:A100 sollten
'unsortierte Zahlen stehen.
For i = 1 To 100
    arr(i, 1) = i
    arr(i, 2) = Cells(i, 1)
Next i

'Bubblesort
x = 1
Do Until x = 0
    x = 0
    For j = 100 To 2 Step -1
        If arr(j, 2) < arr(j - 1, 2) Then
            zwi = arr(j, 2)
            arr(j, 2) = arr(j - 1, 2)
            arr(j - 1, 2) = zwi
            x = x + 1
        End If
    Next j
Loop

'Daten in die Tabelle zurückschreiben
For k = 1 To 100
    Cells(k, 2) = arr(k, 2)
Next k
End Sub

Sub auslesen()
'Alle Dateien eines Ordners nebst Unterordner auslesen
'und mit Hyperlink versehen.
'Aus leerem Blatt starten.
      Dim fs As FileSearch
      Dim intCounter As Integer
      Dim strFolder As String
      Application.Volatile
      strFolder = "C:\Zwi" 'Pfad anpassen
      Set fs = Application.FileSearch
      With fs
         .LookIn = strFolder
         .SearchSubFolders = True
         .FileType = msoFileTypeExcelWorkbooks 'msoFileTypeAllFiles
         .Execute
      End With
      
      For intCounter = 1 To fs.FoundFiles.Count
         Cells(intCounter, 1) = fs.FoundFiles(intCounter)
         ActiveSheet.Hyperlinks.Add Anchor:=Cells(intCounter, 1), Address:=Cells(intCounter, 1).Value
      Next intCounter
     
End Sub
Sub variabel_auslesen()
'Alle Dateien eines Ordners nebst Unterordner auslesen
'und mit Hyperlink versehen.
'Aus leerem Blatt starten.
Dim fs As FileSearch
Dim intCounter As Integer
Dim i As Integer
Dim strFolder As String
Application.Volatile
strFolder = Application.GetOpenFilename
For i = Len(strFolder) To 1 Step -1
    If Mid(strFolder, i, 1) = "\" Then
        strFolder = Left(strFolder, i - 1)
        Exit For
    End If
Next i
'MsgBox strFolder
Set fs = Application.FileSearch
With fs
    .LookIn = strFolder
    .SearchSubFolders = True
    .FileType = msoFileTypeExcelWorkbooks 'msoFileTypeAllFiles
    .Execute
End With
      
For intCounter = 1 To fs.FoundFiles.Count
    Cells(intCounter, 1) = fs.FoundFiles(intCounter)
    ActiveSheet.Hyperlinks.Add Anchor:=Cells(intCounter, 1), Address:=Cells(intCounter, 1).Value
Next intCounter
End Sub

Gruß
Martin Beck

 

Beiträge aus den Excel-Beispielen zum Thema "Dateien löschen"