Ordner und Unterordner nach JPG auslesen
#21
Hallo,

der Code aus #6 basiert genau darauf. Es ist nicht immer notwendig, den Code zu verstehen, um ihn anzuwenden. Das Modul ist als Bibliotheksmodul gedacht, das man bei Bedarf in sein Projekt importiert und dessen Funktionen man dann verwendet. Die Funktion liefert ein Array von File-Objekten als Ergebnis zurück, wobei die Anzahl der gefundenen Dateien dem Rückgabewert entspricht. Zudem kann mit dieser Funktion gleichzeitig nach „*.jpeg” und „*.jpg” gesucht werden.

Der Vorteil solcher „Bibliotheksmodule” ist, dass diese in der Regel bereits gründlich getestet wurden und man sich über die Implementierung keine weiteren Gedanken machen muss. Es ist auch nicht üblich, diese generischen Routinen an die eigenen Bedürfnisse anzupassen, um diese Vorteile nicht aufzugeben. Vielmehr werden immer nur die Ergebnisse und Rückgabewerte ausgewertet.

Andere Beispiele für solche Bibliotheksmodule sind beispielsweise Sortierroutinen (Quicksort) und Kalenderfunktionen.

Knobbi38
Antworten Top
#22
z.B. für jpg's in D:\
Code:
Dim fs, c03

Sub M_snb()
  Set fs = CreateObject("scripting.filesystemobject")
  M_list "D:\", "jpg"
 
'  MsgBox c03
 
  sn = Split(c03, vbLf)
  ReDim sp(UBound(sn), 0)
  For j = 0 To UBound(sn)
      sp(j, 0) = sn(j)
  Next
  Cells(1).Resize(UBound(sp) + 1) = sp
End Sub

Sub M_list(c00, c01)
    On Error Resume Next
    For Each it In fs.getfolder(c00).subfolders
      M_list c00 & "\" & it.Name, c01
    Next
   
    c02 = Dir(c00 & "\*." & c01)
    Do While c02 <> ""
      c03 = c03 & vbLf & c00 & "\" & c02
      c02 = Dir
    Loop
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#23
@snb

Wenn du doch schon eh das FSO verwendest, warum dann noch Dir() verwenden, das ist doch irgendwie kontraproduktiv, oder?  Confused

Knobbi38
Antworten Top
#24
Wie filterst du *.jpg in FSO ?
Ein directory ohne jpg-files braucht doch nicht auf alle einzelne Files überprüft zu werden ?
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#25
Hallo,

FSO untersützt keine Filter, also muss so etwas programmiert werden. Entweder man fragt dafür bei jedem File-Objekt die Type Eigenschaft ab oder man wertet die Name Eigenschaft aus.
Nochmal zur Erinnerung: Dir() unterstützt keinen Unicode, ist also keine wirklich Alternative.

In diesem Beispielcode wird die Name Eigenschaft mit einem Like Pattern geprüft. Zusätzlich ist sogar eine Prüfung auf mehrere Like-Pattern implementiert, so das der Code möglichst generisch bleibt. Da alles im Speicher geschieht, läuft das immer noch sehr performant ab. Da ein Array aus File-Objekts erstellt wird, kann man so später auch noch auf die andere Eigenschaften zugreifen, z.B. das Erstellungsdatum und den Pfad.

Hier mal ein mini Anwendungsbeispiel, welches den "Bilder" Ordner unter Windows nach *.jpg und *.jpeg Dateien durchsucht und das Ergebnis an ein Array aus File-Objekten anfügt:
Code:
    Dim arrFiles() As Object
    Dim lngCount As Long
    Dim strFolder As String
   
    strFolder = udfGetShellFolder("My Pictures")
    lngCount = FileSearchINFO(arrFiles, strFolder, "*.jpg;*.jpeg", True)
   
    MsgBox lngCount & " Files found."

Für alle, die noch nicht die Funktion udfGetShellFolder() zur Ermittlung der Pfade mit Shell:FolderShortcuts haben, im Anhang noch das passende Modul zum Importieren.

Knobbi38


Angehängte Dateien
.zip   modShellHelper.zip (Größe: 421 Bytes / Downloads: 3)
Antworten Top
#26
Warum alle Files im Directory prüfen wenn schon deutlich ist dass der Directory keine einzige gesuchte Datei enthält.
Schon war klar das der TS keine diakritische Zeichen benützt.
Ich bevorzüge darum meine erste Antwort: https://www.clever-excel-forum.de/Thread...#pid307516
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#27
Und Dir() mit Platzhalter macht jetzt keinen Zeichenvergleich mit jedem Dateinamen?

Btw.: Unicode sind übrigens nicht nur diakretischen Zeichen, sondern da gehört einiges mehr dazu.

Wenn dir deine Version reicht, ist das auch in Ordnung. Allerdings gibt es Einschränkungen, die man kennen sollte, damit jeder für sich selbst solche Lösungen richtig einordnen kann.


Knobbi38
Antworten Top
#28
... nur mal interessehalber - welche ("Standard-") Dateierweiterungen enthalten denn problematische Zeichen?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#29
Es geht nicht um die Dateierweiterungen, sondern um die Dateinamen.
Antworten Top
#30
... nö - seitens snb geht es um die Erweiterungen. Wenn per Dir kein *.jpg gefunden wird, braucht man dort nicht weiter zu machen. Das sehe ich genau so ...
Wobei man für Windows als Alternative auch API's Weg beschreiten könnte Wink
Thread-Dateien-auflisten-incl-aus-Unterordnern
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste