HERBERS Excel-Forum - das Archiv

Thema: Nur aktuelle und direkte Unterordnen durchsuchen

Nur aktuelle und direkte Unterordnen durchsuchen
wolgertal
Hallo Zusammen,

mit folgenden Makro wird eine Prozedur ausgelöst und Daten aus den
1. Aktuellen Verzeichnis und
2. allen Unterverzeichnissen ausgelesen

Ich möchte den Code gerne so ändern, dass
a) weitere Unterverzeichnisse in einem Unterverzeichnis nicht berücksichtigt werden, und
b) nur Unterverzeichnisse berücksichtigt werden, welche mit zwei Buchstaben und Unterstrich beginnen, z.B. "AB_ordner1xxxxx"

Ist dies möglich? Vielen Dank für eure Unterstützung

Gruß Ulli

Option Private Module
Public Sub Aktualisieren_6()
Dim objFileSearch As clsFileSearch, objFileDialog As FileDialog
Dim ialngIndex As Long, lngFileCount As Long, lngColumn As Long
Dim strFolder As String
Dim wks As Worksheet
Set wks = Tabelle8 ' Aktueller Tabellenblattname vor ()


Set objFileDialog = Application.FileDialog(fileDialogType:=msoFileDialogFolderPicker)
Application.ScreenUpdating = False



strFolder = ActiveWorkbook.Path ' sucht direkt im aktuellen Pfad ohne Dialog

If strFolder <> vbNullString Then
Set objFileSearch = New clsFileSearch
With wks
For lngColumn = 1 To 5 'Step 2
Call .Range(.Cells(30, lngColumn), .Cells(.Rows.Count, lngColumn)).ClearContents
Next
End With

With objFileSearch
.CaseSenstiv = False
.Extension = "*.*"
.FolderPath = strFolder
.SubFolders = True
For lngColumn = 2 To 4 Step 2
.NewSearch = True
.SearchLike = Switch(lngColumn = 2, wks.Range("I1"), lngColumn = 4, wks.Range("J1")) & "*"
lngFileCount = .Execute(Sort_by_Name, Sort_Order_Ascending)
For ialngIndex = 1 To lngFileCount
Call wks.Hyperlinks.Add(Anchor:=wks.Cells(ialngIndex + 29, lngColumn), _
Address:=.Files(ialngIndex).Path, TextToDisplay:=.Files(ialngIndex).Filename)
wks.Cells(ialngIndex + 29, 1) = ialngIndex
wks.Cells(ialngIndex + 29, lngColumn + 1) = .Files(ialngIndex).LastModify
Next
Next
End With



Set objFileSearch = Nothing
End If

End Sub
AW: Nur aktuelle und direkte Unterordnen durchsuchen
ralf_b
entweder du änderst die Klasse ab(die du nicht gepostet hast).
oder du fügst eine Abfrage ein bevor die Daten in die Exceltabelle geschrieben werden.

  Dim lrow&: lrow = 0 ' das einfügenm

With objFileSearch
.....
For ialngIndex = 1 To lngFileCount
'und die folgenden Codezeilen so übernehmen
If Replace(.Files(ialngIndex).Path, .Files(ialngIndex).Filename, "") Like "*AB_*" Or _
InStr(1, Replace(.Files(ialngIndex).Path, strFolder, ""), "\") = 0 Then
Call wks.Hyperlinks.Add(Anchor:=wks.Cells(lrow + 29, lngColumn), _
Address:=.Files(ialngIndex).Path, _
TextToDisplay:=.Files(ialngIndex).Filename)
wks.Cells(lrow + 29, 1) = ialngIndex
wks.Cells(lrow + 29, lngColumn + 1) = .Files(ialngIndex).LastModify
lrow = lrow + 1
End If
Next
..............
AW: Nur aktuelle und direkte Unterordnen durchsuchen
Piet
Hallo

diese kleine "Simpel Makro" listet nur einen Ordner auf. Der Pfad steht in Zelle C1.
Von mir geändert, das es nur Dateien mit einem Unterstrich an dritter Stelle auflistet.
Anmerkung: eine uralte Dir Kamelle, aber funktioniert immer noch einwandfrei.
https://www.herber.de/bbs/user/169127.xls

mfg Piet
AW: Nur aktuelle und direkte Unterordnen durchsuchen
wolgertal
Hallo Piet,

vielen Dank für deine Nachricht,

ich werde es probieren.

Gruß Ulli
die Klasse ...
Uduuh
Hallo,
... stammt wahrscheinlich von Nepumuk und wurde im Mai 2007 als Ersatz für das in XL2007 entfallene FileSearch-Objekt geschrieben.

Gruß aus'm Pott
Udo
AW: Nur aktuelle und direkte Unterordnen durchsuchen
wolgertal
Hallo Ralf,

vielen Dank für deine Mail und deine Unterstützung.

Ich habe den Code entsprechend geändert.

Nur er macht nicht ganz das was er soll.

Die Daten aus einem direkten Unterordner sollen ausgelesen werden, wenn es noch weitere Unterordner (im Unterordner) gibt, sollen diese nicht mehr berücksichtigt werden.

Der Code liest aber nicht aus dem direkten Unterordner, sondern nur aus allen weiteren Unterordnern.

Ich hoffe das ist verständlich

Viele Grüße Ulli
AW: Nur aktuelle und direkte Unterordnen durchsuchen
ralf_b
hmm, ich habe ein bisschen getestet und dachte das der Code dies genau so tut wie du es gefordert hast. Das mit den weiteren Subordnerleveln stimmt wohl. Aber es werden nur Dateien im Unterordner mit "AB_" im Pfad in die Liste eingetragen. Ich habe einen Weg aufgezeigt an welcher Stelle du deinen Code anpassen kannst. Mach was draus.
Die Klasse hat einen Schalter .SubFolders aber keinen Schalter der die Ordnertiefe angibt. Es gibt auch andere VBA Codes, die Ordner durchsuchen und sind etwas einfacher gehalten.
AW: Nur aktuelle und direkte Unterordnen durchsuchen
wolgertal
Hallo Ralf,

ich versuche es :-)

Danke für deine Mühe.

Gruß Ulli
AW: Nur aktuelle und direkte Unterordnen durchsuchen
wolgertal
Hallo Ralf,

es würde auch reichen wenn nur Daten aus direkten Unterordnern berücksichtigt würden, unabhängig vom Namen.

Nur weitere Unterordner sollten nicht berücksichtigt werden.

Viele Grüße Ulli