648 Aufrufe
Gefragt in Tabellenkalkulation von little-key-2 Einsteiger_in (25 Punkte)
Bitte um nochmalige Hilfe, falls da möglich ist.

Ich habe einen Ordner mit einigen Tausend Bildern und eine Tabelle wo diese fast alle in Spalte N gelistet sind.
Im Laufe der Jahre haben sich mehr Bilder angesammelt, als noch gelistet sind.
Nun suche ich eine Möglichkeit die Daten abzugleichen und somit nicht mehr benötigte Bilder (nicht mehr in Tabelle) im Ordner zu löschen.
Das Löschen ggf. auch manuell, aber eine Vergleichsliste wäre optimal.

Hat da jemand eine VB-Idee?

Danke und Grüße Mario

2 Antworten

0 Punkte
Beantwortet von

Hallo nochmal,

probiers mal mit diesem Code. Der listet alle überflüssigen Dateien in einem neuen Sheet auf. Wenn du die dann wirklich löschen willst, setze die Variable loeschen ganz oben im Code auf True und führe den Code erneut aus.

Sub FotosLoeschen()

 Pfad = "E:\Fotos\Test"
 listall = False 'True es werden alle Files gelistet, False es werden nur überflüssige Files gelistet
 loeschen = False 'False Die Files werden nur gelistet, True Überflüssige Files werden gelöscht
 Set Liste = Sheets("Tabelle1").Range("N:N") 'Vergleichsliste mit zu behaltenden Files
 
 Set NewSheet = Sheets.Add
 
  Set fs = CreateObject("Scripting.FileSystemObject")
  Set fd = fs.GetFolder(Pfad)
  Set flist = fd.Files
  
  If loeschen = True Then frage = MsgBox("Wollen Sie wirklich alle überflüssigen Dateien " _
  & "im Ordner " & Pfad & " löschen?", vbCritical + vbYesNoCancel)
  If frage = vbCancel Then Exit Sub
  
  i = 1
  NewSheet.Range("N1") = IIf(frage = vbYes, "Gelöschte Dateien", "zu löschende Dateien")
  
  For Each fl In flist
    If listall = True Then
      i = i + 1
      n = fl.Name
      NewSheet.Range("N" & i) = n
      If IsError(Application.Match(n, Liste, False)) Then
        NewSheet.Range("N" & i).Font.Bold = True
        If frage = vbYes Then fl.Delete
      End If
    Else
      n = fl.Name
      If IsError(Application.Match(n, Liste, False)) Then
        i = i + 1
        NewSheet.Range("N" & i) = n
        If frage = vbYes Then fl.Delete
      End If
    End If
  Next fl
  
End Sub

Gruß Mr. K.

0 Punkte
Beantwortet von
Hallo Mr. K.,

wie vermutet bei Dir funktioniert das perfekt, mehr als ich sogar erwartet hatte.

Vielen lieben Dank dafür, je Ordner rund 2000 Bilder gelöscht (4 Ordner = ca. 8000).
das ist schon viiiiiel Speicherplatz.

Gruß Mario
...