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

Liste mit Bildnamen vergleichen und Bilder löschen

Liste mit Bildnamen vergleichen und Bilder löschen
12.10.2005 08:33:01
Patrick
Hallo zusammen
Wie kann man über ein Makro eine Liste mit Bildnamen mit den vorhandenen Bildern vergleichen und die Bilder löschen, deren Namen nicht auf der Liste stehen?
Ausgangslage:
Ich habe ein Tabellenblatt namens "Oktober". In den Spalten AD und AE ab Zeile zwei stehen die Bildnamen.
In AD2 1234567890-big.jpg, in AD3 9876-big.jpg usw. bis Zeile 2500
In AE2 1234567890-small.jpg, in AE3 9876-small.jpg usw. bis Zeile 2500
Die Bildnamen (immer eine Nummer) können unterschiedlich lang sein, werden aber immer gefolgt vom Bindestrich und "big.jpg" bzw. "small.jpg".
Die Bilder der Spalte AD liegen im Ordner E:\Bilder\Gross
Die Bilder der Spalte AE liegen im Ordner E:\Bilder\Klein
In dem Tabellenblatt werden häufig Namen gelöscht, immer [Bildnummer]-big.jpg und [Bildnummer]-small.jpg zusammen und somit sollten die entsprechenden Bilder auch gelöscht werden (nicht sofort, ein Makro das man z.B. einmal am Tag aufrufen kann wäre super).
Weiss jemand Rat?
Vielen Dank für Eure Hilfe und schöne Grüsse
Patrick

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Liste mit Bildnamen vergleichen und Bilder löschen
13.10.2005 21:18:27
gordon
Hi Patrick,
finde, das ganze klingt schwer kommerziell. Hier im Forum geht es m.E. um einfache kurze Hilfen oder Beistand für private Anwender oder Lernwillige. Du könntest doch auch einem hoffnungsvolen VB-Programmierer 2 Stunden bezahlen, dann hast Du's.
Trotzdem mal als Tip:
(Noch) Vorhande Dateien mit Application.FileSearch oder über WSH-Befehle in eine Spalte einlesen, auf diese dann einen range setzen, den durchlaufen und mit .find in Deiner 'Oktober'-Liste prüfen, ob Datei noch vorhanden. Falls nein mit kill löschen.
Gruß
gordon
AW: Liste mit Bildnamen vergleichen und Bilder lös
14.10.2005 09:07:24
Patrick
Hallo Gordon
Das ganze ist nicht kommerziell, sondern ein privates Projekt von mir ;-) Wenn ich etwas Kommerzielles brauche dann bezahle ich auch dafür! Nebenbei: Es gibt hier tonnenweise Fragen (mit Antworten) bei denen ganz klar ist, dass sie kommerziell sind (Arbeitspläne, Lagerverwaltung etc.), aber das nur so nebenbei ;-)
Aber trotzdem vielen Dank für Deine Antwort, auch wenn sie mir nicht weiterhilft, da ich kein VBA kann... :-(
Liebe Grüsse
Patrick
Anzeige
AW: Liste mit Bildnamen vergleichen und Bilder lös
14.10.2005 14:45:29
gordon
Hi Patrick,
war nicht böse gemeint, die von Dir angegebenen Fragen beantworte ich z.B. entweder nicht oder so wie Deine ;-)
Hmm, wenn Du kein VBA kannst, dann wird's eng. Ich müsste zwar 'nur' ein wenig Code zusammenführen, allerdins bei Löschung gerne ein wenig testen usw. dauert zwar nur ca. 1 Stunde, würde aber erst im Laufe des Wochenendes etwas werden.
Wenn das reicht, lade mal eine Beispielmappe hoch oder maile sie an
gordon(punkt)shumway(at)arcor.de
Gruß
gordon
AW: Liste mit Bildnamen vergleichen und Bilder lös
14.10.2005 16:57:14
Patrick
Hallo Gordon
Danke für Deine Rückmeldung ;-)
Guckst Du hier, ich habe etwas gefunden:

Sub Bilder_loeschen()
'Die Bildnamen müssen in einer Tabelle mit Namen "Bilder" in Spalte A stehen.
'Bildnamen ohne Pfadangabe, z.B. Test.jpg _
Wenn die Bildnamen mit komplettem Pfad angegeben sind, einfach die Zuweisung _
der Variablen strName ändern: strName=.FoundFiles(i)
'Diese Datei muss im gleichen Ordner wie die Bilder stehen.
'Unterordner werden nicht durchsucht.
Dim wshBilder As Worksheet, _
strOrdner As String, _
strName As String, _
FS As FileSearch, _
i As Integer, _
n As Integer, _
bolGebraucht As Boolean
Application.ScreenUpdating = False
Set wshBilder = Worksheets("Bilder") 'Tabelle mit Bildnamen
strOrdner = ThisWorkbook.Path
Set FS = Application.FileSearch
'Dateien suchen
With FS
.LookIn = strOrdner
.Filename = "*.jpg" 'Dateityp jpg
.SearchSubFolders = False 'keine Unterordner durchsuchen
If .Execute > 0 Then
For i = 1 To .FoundFiles.Count
bolGebraucht = False
strName = Right(.FoundFiles(i), Len(.FoundFiles(i)) - Len(strOrdner) - 1)
'gefundene Datei mit Liste vergleichen
For n = 1 To wshBilder.Range("A65536").End(xlUp).Row
If UCase(wshBilder.Cells(n, 1)) = UCase(strName) Then
bolGebraucht = True 'Datei steht in Liste
Exit For
End If
Next n
'Wenn Datei nicht in Liste, dann löschen
If bolGebraucht = False Then
Kill .FoundFiles(i)
End If
Next i
End If
End With
Application.ScreenUpdating = True
End Sub

Ist fast das was ich brauche. Ich kann es so verwenden, muss halt die Liste der Bildnamen in die Spalte A kopieren, aber dann geht es. Wäre es ein grosser Aufwand den Code so anzupassen, das es auf mein File passt?
Die Datei findest Du hier:
https://www.herber.de/bbs/user/27507.xls
Ich musste die meisten Daten löschen, sonst wäre das File zu gross gewesen.
Nochmals vielen Dank für Dein Hilfeangebot und ein schönes WE!
Viele Grüsse
Patrick
Anzeige
AW: Liste mit Bildnamen vergleichen und Bilder lös
15.10.2005 15:21:36
gordon
Hi Patrick,
Datei: https://www.herber.de/bbs/user/27531.xls
Code darin:
-------------------------------
Option Explicit
Dim wshBilder As Worksheet

Sub Bilder_loeschen()
'Die Bildnamen müssen in einer Tabelle mit Namen "Bilder" in Spalte A stehen.
'Bildnamen ohne Pfadangabe, z.B. Test.jpg _
Wenn die Bildnamen mit komplettem Pfad angegeben sind, einfach die Zuweisung _
der Variablen strName ändern: strName=.FoundFiles(i)
'Unterordner werden nicht durchsucht.
Application.ScreenUpdating = False
Set wshBilder = Worksheets("Oktober") 'Tabelle mit Bildnamen
Call BilderInPfadLoeschen("W:\Bilder\Gross", "AD") 'Pfad und entsprechende  Tabellenspalte
Call BilderInPfadLoeschen("W:\Bilder\Klein", "AE") 'Pfad und entsprechende  Tabellenspalte
Application.ScreenUpdating = True
End Sub


Sub BilderInPfadLoeschen(strOrdner As String, strTableColumn As String)
Dim FS As FileSearch, _
strName As String, _
i As Integer, _
n As Integer, _
col As Long, _
bolGebraucht As Boolean
Set FS = Application.FileSearch
'Dateien suchen
With FS
.LookIn = strOrdner
.Filename = "*.jpg" 'Dateityp jpg
.SearchSubFolders = False 'keine Unterordner durchsuchen
If .Execute > 0 Then
For i = 1 To .FoundFiles.Count
bolGebraucht = False
strName = Right(.FoundFiles(i), Len(.FoundFiles(i)) - Len(strOrdner) - 1)
' spaltennummer ermitteln ( Kosmetik, Code m.E. leichter zu lesen )
col = wshBilder.Range(strTableColumn & "65536").Column
'gefundene Datei mit Liste vergleichen
For n = 1 To wshBilder.Range(strTableColumn & "65536").End(xlUp).Row
If UCase(wshBilder.Cells(n, col)) = UCase(strName) Then
bolGebraucht = True 'Datei steht in Liste
Exit For
End If
Next n
'Wenn Datei nicht in Liste, dann löschen
If bolGebraucht = False Then
Kill .FoundFiles(i)
End If
Next i
End If
End With
End Sub

----------------------------------
ACHTUNG: Pfade in den beiden Call-Zeilen noch ändern von G:\... auf E:\...
Gruß
gordon
Anzeige
AW: Liste mit Bildnamen vergleichen und Bilder lös
16.10.2005 18:30:41
Patrick
Hi Gordon
Vielen Dank, leider funzt das nicht bei mir :-(
Entweder mache ich etwas falsch oder es gibt ein Problem mit der Excel-Version (ich habe Excel 2002)? Den Pfad habe ich auf E:\ angepasst. Wenn ich das Makro starte läuft es ewig bzw. hängt sich Excel auf :-(
Schöne Grüsse
Patrick
AW: Liste mit Bildnamen vergleichen und Bilder lös
16.10.2005 20:22:57
gordon
Hi Patrick,
sollte mit der Version kein Problem geben, habe es auf v.9/2000 erstellt.
Du verwendest auch die von mir upgeloadete Datei ? Oder hast Du den Code per copy-paste in eine andere Datei kopiert ? Dann bitte erstmal mit der von mir upgeloadeten testen, d.h. dort in die Spalten AD/AE die Dateinamen reinkopieren.
Ansonsten schrittweise durchgehen ( Alt + F11, cursor in die sub bilder_loeschen() plazieren und F8-Taste drücken)
Bei welchem Schritt bleibt's hängen ? evtl. Fehlermeldung ?
Strohhalm:
Sind die Dateien evtl. geschützt ? Benötigte Rechte vorhanden ?
Gruß
gordon
Anzeige
AW: Liste mit Bildnamen vergleichen und Bilder lös
17.10.2005 08:29:18
Patrick
Hi Gordon
Ja, ich habe Deine Datei verwendet. Kein Problem bei den Rechten, ich bin Admin und weder Ordner noch Bilder haben Schreibschutz.
Bis hierher läuft das Makro einwandfrei:
.SearchSubFolders = False 'keine Unterordner durchsuchen
So bald folgender Code ausgeführt wird ist Schluss (Aufhängen von Excel, keine Fehlermeldung):
If .Execute &gt 0 Then
Vielen Dank und Grüsse
Patrick

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige