Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1224to1228
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

Ordner anzeigen und filtern

Ordner anzeigen und filtern
Borat
Hallo zusammen,
ich will mir aus einem Ordner einige enthaltenen Ordner in einer Excel Tabelle anzeigen lassen.
Ich hab auch schon geschafft alle Ordner anzeigen zu lassen und danach filter ich dann über einen Spezialfilter aus welche ich brauch.
Da er bei meinem Code aber jeden Ordner durchgeht und es insgesamt fast 2000 Ordner sind dauert das ziehmlich lange :(
Hat jemand eine Idee wie man das ganze beschleunigen könnte ?
Ich hab es auch schon mit einer IF Funktion in der FOR EACH probiert,
dann muss ich zwar danach nicht mehr Filtern aber vom Rechenaufwand bleibt es dasselbe.
Hier mal mein aktueller Code:

Sub Ordner_laden()
Worksheets("Ablage").Range("A3:C300").ClearContents
Worksheets("Ablage").Range("A3").Select
Const Verz = "O:\Kundenneuanlagen\Kundenneuanlagen 2011\"
Dim Ordner
Dim Var
Dim FSO As Object
Set FSO = CreateObject("Scripting.filesystemobject")
For Each Ordner In FSO.getfolder(Verz).subfolders
With ActiveCell
.Value = Ordner   'schreib den Pfad in Spalte A
.Offset(0, 1).Value = Ordner.Name 'schreibt nur den Namen in Spalte B.
Offset(1, 0).Select
End With
Next
Worksheets("Ablage").Range("A3").Select
End Sub

Mfg
Borat

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Ordner anzeigen und filtern
24.08.2011 09:06:36
Dirk
Hallo Borat!
Aendere mal Dein Makro wie folgt:
Sub Ordner_laden()
Worksheets("Ablage").Range("A3:C300").ClearContents
Worksheets("Ablage").Range("A3").Select
Const Verz = "O:\Kundenneuanlagen\Kundenneuanlagen 2011\"
Dim Ordner
Dim MyArr0() As Variant, MyArr1() As Variant, i As Long
Dim FSO As Object
Set FSO = CreateObject("Scripting.filesystemobject")
ReDim MyArr0(0)
ReDim MyArr1(0)
i = 1
For Each Ordner In FSO.getfolder(Verz).subfolders
ReDim Preserve MyArr0(i)
ReDim Preserve MyArr1(i)
MyArr0(i) = Ordner
MyArr1(i) = Ordner.Name
i = i + 1
Next
'schreibe array in tabelle
With ThisWorkbook.Sheets("Ablage")
.Range(Cells(3, 1), Cells(UBound(MyArr0) + 2, 1)) = Application.Transpose(MyArr0)
.Range(Cells(3, 2), Cells(UBound(MyArr1) + 2, 2)) = Application.Transpose(MyArr1)
End With
Worksheets("Ablage").Range("A3").Select
End Sub

Das Ergebnis wird ab Zelle A3 eingetragen, wobei Ae und B3 leer bleiben.
Lass hoeren, ob ok.
Gruss
Dirk aus Dubai
Anzeige
AW: Ordner anzeigen und filtern
24.08.2011 11:21:54
Borat
Hallo Dirk,
danke für deinen Lösungsvorschlag.
Deine Idee ist wohl eine etwas sauberere Lösung wie man die Daten ins Tabellenblatt überträgt.
Aber ich glaub der eigentliche Rechenaufwand liegt darin das er jeden Ordner durchgehen muss.
Ich hab mal die Zeit bei beiden gestoppt ^^ der erste Code dauerte 40,9 Sekunden deiner 37,0.
Vielleicht kann man irgendwie gleich nur bestimmte Ordner ansprechen.
In dem Verzeichnis gibt es Ordner mit Nummern und Buchstaben z.B. 225654654 A ABC
und Ordner nur mit Buchstaben z.B. A ABC.
Ich benötige eine Liste von den Ordnern ohne Nummer. (Filter ich bis jetzt im Nachhinein aus)
Ich hab es wie gesagt schon mit einer IF Formel in der FOR EACH probiert,
dass hat funktioniert aber war nicht schneller als vorher.
Außerdem hab ich es leider nur sehr umständlich geschafft die mit Zahlen anfangenden auszufiltern (siehe Code):
For Each Ordner In FSO.getfolder(Verz).subfolders
If Not Ordner.Name Like "1*" Then
If Not Ordner.Name Like "2*" Then
If Not Ordner.Name Like "3*" Then
If Not Ordner.Name Like "4*" Then
If Not Ordner.Name Like "5*" Then
If Not Ordner.Name Like "6*" Then
If Not Ordner.Name Like "7*" Then
If Not Ordner.Name Like "8*" Then
If Not Ordner.Name Like "9*" Then
With ActiveCell
.Value = Ordner
.Offset(0, 1).Value = Ordner.Name
.Offset(1, 0).Select
End With
End If
End If
End If
End If
End If
End If
End If
End If
End If
Next
Mfg
Borat
Anzeige
AW: Ordner anzeigen und filtern
24.08.2011 12:01:02
Dirk
Hallo!
vieleicht so:
Sub Ordner_laden()
Worksheets("Ablage").Range("A3:C300").ClearContents
Worksheets("Ablage").Range("A3").Select
Const Verz = "O:\Kundenneuanlagen\Kundenneuanlagen 2011\"
Dim Ordner
Dim MyArr0() As Variant, MyArr1() As Variant, i As Long
Dim FSO As Object
Set FSO = CreateObject("Scripting.filesystemobject")
ReDim MyArr0(0)
ReDim MyArr1(0)
i = 1
For Each Ordner In FSO.getfolder(Verz).subfolders
if not isnumeric(left(ordner.name,1)) then
ReDim Preserve MyArr0(i)
ReDim Preserve MyArr1(i)
MyArr0(i) = Ordner
MyArr1(i) = Ordner.Name
i = i + 1
end if
Next
'schreibe array in tabelle
With ThisWorkbook.Sheets("Ablage")
.Range(Cells(3, 1), Cells(UBound(MyArr0) + 2, 1)) = Application.Transpose(MyArr0)
.Range(Cells(3, 2), Cells(UBound(MyArr1) + 2, 2)) = Application.Transpose(MyArr1)
End With
Worksheets("Ablage").Range("A3").Select
End Sub
Gruss
Dirk aus Dubai
Anzeige
AW: Ordner anzeigen und filtern
24.08.2011 13:11:32
Borat
Hey Dirk,
vielen Dank jetzt geht es wirklich wesentlich schneller :-)
Ich glaub ich kann hier noch so einiges lernen.
Liebe Grüße
Borat

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige