Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1824to1828
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
Inhaltsverzeichnis

Bestimmter Ordner an beliebiger Stelle

Bestimmter Ordner an beliebiger Stelle
21.04.2021 23:28:00
Timo
Guten Abend zusammen,
ich werde leider nicht fündig bzgl. meinem Problem und würde mich freuen, wenn mir jemand weiter helfen könnte.
Ich habe eine Verzeichnisstruktur, in der es verschiedene Ordner gibt.
In einigen Ordnern gibt es den Unterordner "Ergebnisse". Dieser Unterordner ist aber häufig an unterschiedlichen Stellen im Pfad und daher bin ich auch nicht fündig geworden aus den anderen Beiträgen im Netz, denn dort wird der Ordner immer an einer bestimmten Stelle im Pfad erwartet.
Ich möchte gern die Dateinamen der xlsx Dateien die direkt in diesem Unterordner "Ergebnisse" abliegen und deren Pfad in ein Tabellenblatt "Daten" einlesen.
Probiert habe ich es mit der beigefügten Tabelle:
https://www.herber.de/bbs/user/145706.xlsm
bei der ich nur nach "*Ergebniss*".xlsx Dateien habe suchen lassen, aber es gibt auch Ergebnisdateien, die dann in einem Archiv-Unterordner unterhalb des Ordners Ergebnisse liegen und diese alten Dateien listet er mir dann auch mit auf!
Habt ihr eine Idee wie ich das machen kann?
Vielen Dank und einen Gruß in die Nacht an euch da draußen
Timo

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bestimmter Ordner an beliebiger Stelle
22.04.2021 03:31:21
Oberschlumpf
Hi Timo,
ohne deinen Code testen zu können, weil die auf deinem Computer vorhandene Ordner nicht auf meinem sind und ich die nicht kenne, hab ich nur diese Idee:
wenn dein "richtiger Pfad" immer so heißen muss, dass direkt hinter dem Ordner "Ergebnisse" eben sofort Datei.xlsx kommen muss, dann prüf doch vor dem Eintragen eines Treffers in die Tabelle, ob der Treffer richtig ist, vielleicht so:

If Instr(objFile.Path, "Ergebnisse\*.xlsx") > 0 Then
rng.Offset(1, 0) = objFile.Name
rng.Offset(1, 1) = objFile.Path
End If
Dein Befehl
strDatNam = "*Ergebnisse*.xlsx"
findet zwar weiterhin erst mal jede Datei.xlsx", egal, in welchem Ordner, aber mein eingebauter Code sollte erkennen, ob direkt hinter "...Ergebnisse\" sofort ein Dateiname.xlsx folgt, oder ob ein weiterer \ kommt, was dann bedeutet, dass ein weiterer Ordner im Pfad enthalten ist - und dieser Treffer würde - nicht - in die Tabelle eingetragen werden.
Wenn meine Idee nicht funzt, muss mein Code vielleicht nur etwas angepasst werden.
Ich könnte da aber nicht weiterhelfen, weil ich ja nix testen kann.
Hilfts?
Ciao
Thorsten
Anzeige
AW: Bestimmter Ordner an beliebiger Stelle
22.04.2021 09:58:38
Timo
Hi Thorsten,
vielen Dank für deine Hilfe, ich habe meine If Bedingung jetzt mal mit deiner ersetzt, aber da kommt kein Ergebnis:

Sub Dateien_ermitteln()
Dim objFSO As Object
Dim objFolder As Object
Dim strDatNam As String
Set objFSO = CreateObject("Scripting.FileSystemObject")
strsuchpfad = "U:\Daten\Hallen"
If strsuchpfad = False Then Exit Sub
If strsuchpfad = 0 Then Exit Sub
strDatNam = "*Ergebnisse*.xlsx"
Set objFolder = objFSO.getfolder(strsuchpfad)
Rekursiv objFolder, strDatNam
Set rng = Nothing
Set objFile = Nothing
Set objFolder = Nothing
Set objSubFolder = Nothing
Set objFSO = Nothing
End Sub
Sub Rekursiv(objFolder As Object, strDatNam As String)
Dim objFile As Object
Dim objSubFolder As Object
Dim rng As Range
Dim Zeile As Long
For Each objFile In objFolder.Files
'  Meine alte If bedingung -> If objFile.Name Like strDatNam Then
If Instr(objFile.Path, "Ergebnisse\*.xlsx") > 0 Then
Set rng = ActiveWorkbook.Sheets("Daten").Cells(Rows.Count, 1).End(xlUp).Offset(0, 0)
rng.Offset(1, 0) = objFile.Name
rng.Offset(1, 1) = objFile.Path
End If
Next   'objFile
For Each objSubFolder In objFolder.subfolders
Set objFolder = objSubFolder
Rekursiv objFolder, strDatNam
Next 'objSubFolder
End Sub
Vielen Dank und viele Grüße
Timo
Anzeige
AW: Bestimmter Ordner an beliebiger Stelle
22.04.2021 17:29:04
Oberschlumpf
Hi,
wie gesagt, ihc konnte ja nicht testen. Und deswegen empfahl ich dir, ein bisschen auszuprobieren, meinen Code anzupassen, oder oder oder...
Wenn du aber nach 1x ausprobieren schon aufgibst - nu ja, is deine Sache.
Aber egal, Rudi scheint ja den Fehler gefunden zu haben (hab ich noch nicht gelesen)
Ciao
Thorsten
AW: Bestimmter Ordner an beliebiger Stelle
22.04.2021 10:16:34
Rudi
Hallo,
teste mal:

Sub Rekursiv(objFolder As Object, strDatNam As String)
Dim objFile As Object
Dim objSubFolder As Object
Dim rng As Range
Dim Zeile As Long
If LCase(objFolder) Like "*\Ergebnisse" Then
For Each objFile In objFolder.Files
If LCase(objFile.Name) Like LCase(strDatNam) Then
Set rng = ActiveWorkbook.Sheets("Daten").Cells(Rows.Count, 28).End(xlUp).Offset(0, 0)
rng.Offset(1, 0) = objFile.Name
rng.Offset(1, 1) = objFile.Path
End If
Next objFile
End If
For Each objSubFolder In objFolder.subfolders
Set objFolder = objSubFolder
Rekursiv objFolder, strDatNam
Next objSubFolder
End Sub
Gruß
Rudi
Anzeige
AW: Bestimmter Ordner an beliebiger Stelle
22.04.2021 10:57:52
Timo
Servus Rudi,
danke für deine Hilfe, ich hab deinen Code eingesetzt, leider kommt kein Ergebnis, schade :-).
Viele Grüße
Timo
AW: Bestimmter Ordner an beliebiger Stelle
22.04.2021 11:13:19
Rudi
Hallo,
ist in deinen Dateinamen denn 'Ergebnis' enthalten?
Gruß
Rudi
AW: Bestimmter Ordner an beliebiger Stelle
22.04.2021 11:20:11
Timo
Hallo Rudi,
ja, die Dateinamen haben immer den Bestandteil "Ergebnis". Manchmal mit einem Wort davor und auch manchmal mit einem Datum dahinter und sie liegen immer direkt unter dem Ordner "Ergebnisse".
Vielen Dank und viele Grüße
Timo
Fehler gefunden
22.04.2021 11:34:16
Rudi
Hallo,
Like "*\ergebnisse" statt Like "*\Ergebnisse"

If LCase(objFolder) Like "*\ergebnisse" Then
Gruß
Rudi
Anzeige
AW: Fehler gefunden
22.04.2021 11:45:13
Timo
Hallo Rudi,
meeeeega wuuuhuuuu jetzt klappt´s vielen vielen Dank :-) !!!!
Hier noch mal der endgültige Code:

Sub Dateien_ermitteln()
Dim objFSO As Object
Dim objFolder As Object
Dim strDatNam As String
Set objFSO = CreateObject("Scripting.FileSystemObject")
strsuchpfad = "U:\Daten\Hallen"
If strsuchpfad = False Then Exit Sub
If strsuchpfad = 0 Then Exit Sub
strDatNam = "*Ergebnis*.xlsx"
Set objFolder = objFSO.getfolder(strsuchpfad)
Rekursiv objFolder, strDatNam
Set rng = Nothing
Set objFile = Nothing
Set objFolder = Nothing
Set objSubFolder = Nothing
Set objFSO = Nothing
End Sub
Sub Rekursiv(objFolder As Object, strDatNam As String)
Dim objFile As Object
Dim objSubFolder As Object
Dim rng As Range
Dim Zeile As Long
If LCase(objFolder) Like "*\ergebnisse" Then
For Each objFile In objFolder.Files
If LCase(objFile.Name) Like LCase(strDatNam) Then
Set rng = ActiveWorkbook.Sheets("Daten").Cells(Rows.Count, 28).End(xlUp).Offset(0, 0)
rng.Offset(1, 0) = objFile.Name
rng.Offset(1, 1) = objFile.Path
End If
Next objFile
End If
For Each objSubFolder In objFolder.subfolders
Set objFolder = objSubFolder
Rekursiv objFolder, strDatNam
Next objSubFolder
End Sub
Viele Grüße und einen schönen Tag
Timo
Anzeige
AW: Fehler gefunden
22.04.2021 17:31:03
Oberschlumpf
na super^^ - genau DAS meine ich!
Auf Groß- Kleinschreibung hättest du mit mehr Einsatz deinerseits auch selbst kommen können....
AW: Fehler gefunden
22.04.2021 18:26:24
Timo
Hi Thorsten,
leider könnt ihr nicht sehen wie viele Versuche ich schon gemacht habe und was ich alles ausprobiert habe und ein bisschen mehr Einsatz ist bei euch Profis für euch leider kaum sichtbar bei meinem geringen Wissen. Ich wusste bis jetzt nicht, dass die Groß- und Kleinschreibungsthematik eine Rolle spielen "kann".
Ich bin auf jeden Fall mega dankbar für eure Hilfe/n und werde die Groß- und Kleinschreibungsthematik bei zukünftigen Codes auf jeden Fall selbst testen und auch ab jetzt nicht mehr vergessen :-)
Also lieben Dank auch noch einmal an deine Hilfe und einen schönen Abend
Timo
Anzeige
AW: Fehler gefunden
23.04.2021 02:44:57
Oberschlumpf
Hi Timo,
JA, du hast recht!
Ich möchte mich bei dir entschuldigen!
Ich übersehe manchmal leider wirklich, wie schwer es sein kann, auch einen solchen "kleinen" Fehler zu finden.
Auch ich hab ja mal genau da angefangen - wo jetzt du gerade bist!
Also Timo, bleib dran und gib nicht auf!
Ciao
Thorsten

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige