3.8k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

ich habe im Netz ewig gesucht und nichts gefunden, vielleicht könnt ihr mir da helfen.

ich glaube eine EXCEL Tabelle, die mir die Ordnerstruktur von "//halligalli/herdamit/usw" ausliest.
Da die Ordnerstruktur mehr als 20 Ebenen in die Tiefe geht, würde ich gerne selber bestimmen können, ob es 3 oder 4 Ebenen nur auflistet.
Ausserdem wäre eine option mit Dateienlauflisten auch nützlich.

hat jemand von euch schon so etwas parat?

Danke

6 Antworten

0 Punkte
Beantwortet von kjg17 Profi (34.4k Punkte)
Hallo,

das geht z.B. problemlos mit -> ExpPrint. Das Tool kannst du nach der Installation über das Kontextmenü aufrufen und die Ordnerstruktur nach deinen Wünschen in ein Textfile ausgeben lassen. Dieses kannst du dann bei Bedarf mit Excel öffenen und über den Textkonvertierungs-Assistenten in Spalten aufteilen lassen wobei den der Back-Slash als Trennzeichen verwendet wird.

Die von dir vorzunehmenden Einstellungen in ExpPrint kannst du dir -> HIER ansehen (ging jetzt schneller als eine entsprechende Erläuterung).

Gruß
Kalle
0 Punkte
Beantwortet von
Danke für die schnelle antwort..
nur hab ich ein problem mit dem installieren, da ich keine admin rechte habe. :-(

und es soll ja dann auch alles über excel und beim öffnen der datei automatisch gehen.
0 Punkte
Beantwortet von Experte (3.2k Punkte)
Ich denke mal, jedenfalls solange ich das richtig verstanden habe, dass es doch etwas einfacher geht.
einfach
dir /s /b /ad >dir.txt
in die Console hacken und schon haste das gleiche file, wie es dir ExpPrint aus A#1 erzeugt hätte.
Dies lässte dann noch entsprechend A#1 zurechtstutzen und fertig.

dir [Pfad] -> Zum listen der Dateien/Verzeichnisse, in Pfad kannst du bei Bedarf auch direkt einen Pfad angeben z.B.:
dir //halligalli/herdamit/usw
/s -> sorgt dafür, dass "in die Tiefe" gegangen wird
/b -> sorgt dafür, dass nur die Namen/Pfade gelistet werden und nicht noch erstelldaten und so
/ad sorgt dafür, dass nur verzeichnisse angezeigt werden
>dir.txt -> leitet es von stdout in das file "dir.txt" um. da kann natürlich auch was anderes drinstehen


Ele
0 Punkte
Beantwortet von kjg17 Profi (34.4k Punkte)
Hallo,

und es soll ja dann auch alles über excel und beim öffnen der datei automatisch gehen

Dass das Einlesen der Ordnerstruktur direkt in Excel erfolgen soll hattest du so aber nicht gesagt. Da müssen wohl die Experten für VB-Script ran, zu denen ich mich nicht zähle.

Gruß
Kalle
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all :-)

ein beispiel :-))

gruss nighty

gibt die ebene an
VerzeichnisTiefe = 2


Private strList() As String
Private DicPuffer As String
Private lngCount As Long
Private VerzeichnisTiefe As Integer
Public Sub Einlesen()
lngCount = 0
DicPuffer = "C:\Temp"
VerzeichnisTiefe = 2
SearchFiles DicPuffer, "*.*"
If lngCount = 0 Then
MsgBox "No file found"
Exit Sub
End If
With ThisWorkbook.Worksheets(1)
.Cells.Clear
.Range(.Cells(1, 1), Cells(lngCount, 1)) = _
WorksheetFunction.Transpose(strList)
End With
End Sub
Private Sub SearchFiles(strFolder As String, strFileName As String)
Dim objFolder As Object
Dim objFile As Object
Dim objFSO As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
For Each objFile In objFSO.GetFolder(strFolder).Files
If objFile.Name Like strFileName Then
ReDim Preserve strList(lngCount)
strList(lngCount) = objFile.Name
lngCount = lngCount + 1
End If
Next
For Each objFolder In objFSO.GetFolder(strFolder).Subfolders
If strFolder <> DicPuffer Then
If VerzeichnisTiefe = 2 Then Exit For
VerzeichnisTiefe = VerzeichnisTiefe + 1
End If
If VerzeichnisTiefe = 0 Then
Exit For
Else
SearchFiles strFolder & "\" & objFolder.Name, strFileName
DicPuffer = strFolder
End If
Next
End Sub
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all :-)

korrigiert

gruss nighty

Private strList() As String
Private DicPuffer As String
Private lngCount As Long
Private VerzeichnisTiefe As Integer
Private VerzeichnisIndex As Integer
Public Sub Einlesen()
lngCount = 0
DicPuffer = "C:\Temp"
VerzeichnisTiefe = 0
VerzeichnisIndex = 2 'deine maxebene,null zaehlt mit
SearchFiles DicPuffer, "*.*"
If lngCount = 0 Then
MsgBox "No file found"
Exit Sub
End If
With ThisWorkbook.Worksheets(1)
.Cells.Clear
.Range(.Cells(1, 1), Cells(lngCount, 1)) = _
WorksheetFunction.Transpose(strList)
End With
End Sub
Private Sub SearchFiles(strFolder As String, strFileName As String)
Dim objFolder As Object
Dim objFile As Object
Dim objFSO As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
For Each objFile In objFSO.GetFolder(strFolder).Files
If objFile.Name Like strFileName Then
ReDim Preserve strList(lngCount)
strList(lngCount) = objFile.Name
lngCount = lngCount + 1
End If
Next
For Each objFolder In objFSO.GetFolder(strFolder).Subfolders
If strFolder <> DicPuffer Then
If VerzeichnisTiefe = 2 Then Exit For
VerzeichnisTiefe = VerzeichnisTiefe + 1
End If
If VerzeichnisTiefe = VerzeichnisIndex Then
Exit For
Else
SearchFiles strFolder & "\" & objFolder.Name, strFileName
DicPuffer = strFolder
End If
Next
End Sub
...