zlep01
Goto Top

Windows Ordnerstruktur, Pfad und Dateiname in Excel ausgeben

Hallo liebes Forum,

ich stehe zur Zeit vor einem Problem, welches ich hoffe, mit einem Makro (VBA) oder ähnlichem lösen zu können. (Es muss aber nicht VBA sein, ich bräuchte am Ende halt eine Excel).
Über eure Hilfe wäre ich sehr sehr dankbar.

Und zwar versuche ich die Struktur eines Ordners (Windows-Pfad) in Excel abzubilden. Konkret sieht der Ordner so aus:

C:\Ordner\Unterordner\Bild1.png
C:\Ordner\Unterordner\Bild1_1.png
C:\Ordner\Unterordner2\Bild2.png
usw...

Nun möchte ich eine Excel-Datei, die mir am Ende folgendes ausgibt:

Spalte A | Spalte B | Spalte C | ...
[Name Unterordner] | C:\Ordner\Unterordner\Bild1.png | C:\Ordner\Unterordner\Bild1_1.png
[Name Unterordner] | C:\Ordner\Unterordner\Bild2.png
usw...

Wichtig ist, dass ich wirklich in Spalte A den Ordnernamen des Unterordners benötige und in den folgenden Spalten dann jeweils den kompletten Pfad + Dateiname des Ordnerinhalts (also: C:\Ordner\Unterordner\Bild1.png).

Ist so etwas in Excel möglich?

Vielen lieben Dank bereits im Voraus.

Content-Key: 307903

Url: https://administrator.de/contentid/307903

Printed on: April 24, 2024 at 03:04 o'clock

Mitglied: 129813
Solution 129813 Jun 22, 2016 updated at 18:38:16 (UTC)
Goto Top
Hi,
take a look at this:
Sub ListFolder()
    Const ROOTFOLDER = "C:\Ordner"  
    Set fso = CreateObject("Scripting.FileSystemObject")  
    With Sheets(1)
        Set rngOut = .Range("A1")  
        For Each folder In fso.GetFolder(ROOTFOLDER).SubFolders
            rngOut.Value = folder.Name
            If folder.files.Count > 0 Then
                Dim arrFiles()
                cnt = 1
                For Each file In folder.files
                    ReDim Preserve arrFiles(cnt)
                    arrFiles(cnt - 1) = file.PATH
                    cnt = cnt + 1
                Next
                rngOut.Offset(0, 1).Resize(1, folder.files.Count).Value = arrFiles
            End If
            Set rngOut = rngOut.Offset(1, 0)
        Next
        .UsedRange.EntireColumn.AutoFit
    End With
End Sub
Or you use a powershell one liner to create a csv
gci 'C:\Ordner' -Directory | %{"$($_.BaseName);$((gci $_.Fullname -File | select -Expand Fullname)-join ';')"} | out-file 'C:\result.csv'  
Open it in Excel and run the text-to-column assistant with the semicolon as delimiter.

Regards
Member: zlep01
zlep01 Jun 23, 2016 at 09:54:07 (UTC)
Goto Top
Awesome. Thank you very much. The VBA script works like a charme.