Tip: andere talen zijn Google-Vertaald. Je kunt het English versie van deze link.
Log in
x
or
x
x
Registreren
x

or

Hoe een lijst van alle bestanden in map en submappen in een werkblad?

Heb je ooit geprobeerd alle bestandsnamen uit een map in een werkblad te zetten, inclusief de bestanden in de submappen? In feite is er geen directe manier om de bestandsnamen van een map en de bijbehorende submap in Excel op te nemen, maar vandaag zal ik enkele snelle trucs introduceren om deze taak op te lossen.

Maak een lijst van alle bestandsnamen in map en submap met VBA-code

Een lijst van alle bestandsnamen in map en submap snel en gemakkelijk met Kutools voor Excel


Toon alle bestanden van een map inclusief submappen in een werkblad:

Kutools for Excel's Bestandslijst functie, kunt u snel een lijst maken van alle bestandsnamen uit een map inclusief submappen in een nieuw werkblad. Klik om te downloaden en gratis proef Kutools voor Excel nu!

doc lijst bestanden in map submap 9

Kutools for Excel: met meer dan 200 handige Excel-add-ins, gratis om zonder beperking in 60-dagen te proberen. Download en gratis proef nu!



Normaal gesproken heeft Excel geen ingebouwde functie om met deze taak om te gaan, maar u kunt de volgende VBA-code toepassen om dit probleem te verhelpen.

1. Activeer een nieuw werkblad met de bestandsnamen.

2. Houd de toets ingedrukt ALT + F11 toetsen in Excel, en het opent de Microsoft Visual Basic voor toepassingen venster.

3. Klikken bijvoegsel > moduleen plak de volgende code in de Module venster.

VBA-code: lijst van alle bestandsnamen in map en submap

Sub MainList()
'Updateby20150706
Set folder = Application.FileDialog(msoFileDialogFolderPicker)
If folder.Show <> -1 Then Exit Sub
xDir = folder.SelectedItems(1)
Call ListFilesInFolder(xDir, True)
End Sub
Sub ListFilesInFolder(ByVal xFolderName As String, ByVal xIsSubfolders As Boolean)
Dim xFileSystemObject As Object
Dim xFolder As Object
Dim xSubFolder As Object
Dim xFile As Object
Dim rowIndex As Long
Set xFileSystemObject = CreateObject("Scripting.FileSystemObject")
Set xFolder = xFileSystemObject.GetFolder(xFolderName)
rowIndex = Application.ActiveSheet.Range("A65536").End(xlUp).Row + 1
For Each xFile In xFolder.Files
  Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
  rowIndex = rowIndex + 1
Next xFile
If xIsSubfolders Then
  For Each xSubFolder In xFolder.SubFolders
    ListFilesInFolder xSubFolder.Path, True
  Next xSubFolder
End If
Set xFile = Nothing
Set xFolder = Nothing
Set xFileSystemObject = Nothing
End Sub
Function GetFileOwner(ByVal xPath As String, ByVal xName As String)
Dim xFolder As Object
Dim xFolderItem As Object
Dim xShell As Object
xName = StrConv(xName, vbUnicode)
xPath = StrConv(xPath, vbUnicode)
Set xShell = CreateObject("Shell.Application")
Set xFolder = xShell.Namespace(StrConv(xPath, vbFromUnicode))
If Not xFolder Is Nothing Then
  Set xFolderItem = xFolder.ParseName(StrConv(xName, vbFromUnicode))
End If
If Not xFolderItem Is Nothing Then
  GetFileOwner = xFolder.GetDetailsOf(xFolderItem, 8)
Else
  GetFileOwner = ""
End If
Set xShell = Nothing
Set xFolder = Nothing
Set xFolderItem = Nothing
End Function

4. Nadat u de code in de module hebt geplakt, drukt u op F5 toets om deze code uit te voeren, en a Macro's dialoogvenster verschijnt, selecteer de MainList macro-naam en klik vervolgens op lopen knop, zie screenshot:

doc lijst bestanden in map submap 1

5. En in de Blader venster, selecteer de map waarin u alle bestandsnamen wilt weergeven inclusief de submappen, zie screenshot:

doc lijst bestanden in map submap 2

6. Nadat u de map hebt opgegeven, klikt u op OK knop, en alle bestandsnamen in de map en de submappen zijn in het huidige werkblad van cel A2 weergegeven, zie screenshots:

doc lijst bestanden in map submap 3
 1
doc lijst bestanden in map submap 4

Met bovenstaande code kunt u alleen de bestandsnamen weergeven, soms moet u andere kenmerken vermelden, zoals bestandsgrootte, bestandstype, gemaakte tijd, map en dergelijke. Kutools for Excel bevat een nuttige functie - Bestandslijst, met deze functie kunt u snel een lijst maken van alle of specifieke typen bestandsnamen in een map en de bijbehorende submappen.

Kutools for Excel : met meer dan 300 handige Excel-invoegtoepassingen, gratis om zonder beperking te proberen in 60-dagen.

Na het installeren van Kutools for Excel, gelieve te doen met de volgende stappen:

1. Klikken Enterprise > Import / Export > Bestandslijstzie screenshot:

doc lijst bestanden in mappen submap 5 5

doc lijst bestanden in mappen submap 6 6

2. In de Bestandslijst dialoogvenster, voert u de volgende bewerkingen uit:

A: Klik doc lijst bestanden in map submap 7om de map te kiezen waarin u de bestandsnamen wilt weergeven;

B: Geef het bestandstype op dat u in de lijst wilt opnemen Bestanden type sectie;

C: Selecteer een bestandsgrootte-eenheid die u wilt weergeven vanuit de Bestandsgrootte-eenheid sectie.

Notes: Controleer om de bestandsnamen in de submap weer te geven Bestanden opnemen in submappen, als je kijkt Maak hyperlinks optie, maakt het hyperlinks voor elke bestandsnaam en map.

Download en gratis proef nu!

3. Dan klikken OK knop, alle bestanden in de geselecteerde map en de submappen zijn weergegeven met de volgende kenmerken in een nieuw werkblad. Zie screenshot:

doc lijst bestanden in map submap 8

Klik om meer details over dit Bestandslijst-hulpprogramma te weten.

Download en proef Kutools nu voor Excel!


Kutools for Excel: met meer dan 200 handige Excel-add-ins, gratis om zonder beperking in 60-dagen te proberen. Download en gratis proef nu!


Kutools voor Excel - De beste Office-productiviteitstool Verhoog uw productiviteit met 80%

  • visfuik: Snel invoegen complexe formules, grafieken en alles wat je eerder hebt gebruikt; Coderen van cellen met wachtwoord; Maak een mailinglijst en stuur e-mails ...
  • Super Formula Bar (bewerk eenvoudig meerdere regels tekst en formule); Lay-out lezen (gemakkelijk grote aantallen cellen lezen en bewerken); Plakken op gefilterd bereik...
  • Cellen / rijen / kolommen samenvoegen zonder gegevens te verliezen; Inhoud gesplitste cellen; Combineer dubbele rijen / kolommen... voorkomen dubbele cellen; Ranges vergelijken...
  • Selecteer Dupliceren of Uniek rijen; Selecteer Lege rijen (alle cellen zijn leeg); Super Find en Fuzzy Find in veel werkboeken; Willekeurig selecteren ...
  • Exacte kopie Meerdere cellen zonder formule-referentie te wijzigen; Automatisch referenties maken naar meerdere vellen; Voeg kogels toe, Selectievakjes en meer ...
  • extract Text, Tekst toevoegen, verwijderen op positie, Verwijder de spatie; Subtotalen voor paging maken en afdrukken; Converteren tussen cellen Inhoud en opmerkingen...
  • Super filter (bewaar en pas filterschema's toe op andere bladen); Geavanceerde sortering per maand / week / dag, frequentie en meer; Speciaal filter door vet, cursief ...
  • Combineer werkmappen en werkbladen; Tabellen samenvoegen op basis van sleutelkolommen; Gegevens splitsen in meerdere bladen; Batch Converteer xls, xlsx en PDF...
  • Meer dan 300 krachtige functies. Ondersteunt Office / Excel 2007-2019 en 365. Ondersteunt alle talen. Eenvoudig te implementeren in uw onderneming of organisatie. Volledige functionaliteit 60-daagse gratis proefversie.
kte-tab 201905

Tabblad Office Brengt interface met tabbladen naar Office en maakt uw werk veel eenvoudiger

  • Bewerken en lezen met tabbladen inschakelen in Word, Excel, PowerPoint, Publisher, Access, Visio en Project.
  • Open en maak meerdere documenten in nieuwe tabbladen van hetzelfde venster, in plaats van in nieuwe vensters.
  • Verhoogt uw productiviteit met 50% en verlaagt dagelijks honderden muisklikken voor u!
Officetab onderaan
Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    JDay · 2 months ago
    Really new to VBA. how do i use the above code but have the file path built into it so i don't have to search for it every time?
  • To post as a guest, your comment is unpublished.
    James · 6 months ago
    My VBA is saying that the variable folder is not defined. Anyone know why this is?
  • To post as a guest, your comment is unpublished.
    Chris K · 11 months ago
    What was the purpose of the parameter ByVal xIsSubfolders As Boolean?
  • To post as a guest, your comment is unpublished.
    Leandro Barbosa · 11 months ago
    Extremamente elegante este código!
  • To post as a guest, your comment is unpublished.
    jumpjack · 1 years ago
    Sub "GetFileOwner()" in code above is not used.
    • To post as a guest, your comment is unpublished.
      skyyang · 1 years ago
      Hello, jumpjack,
      The above code works well in my Excel, which Excel version do you use?
  • To post as a guest, your comment is unpublished.
    Brett · 1 years ago
    Thankyou for this code it has helped me with a request a work, I am now able to import these results into Access for further transformation.Appreciate it.
  • To post as a guest, your comment is unpublished.
    David · 1 years ago
    This helped me to convert my code to get the recursive call, but I wonder about the way you use objects. I prefer to define my objects as what they are, be they workbooks, worksheets or file system objects. (dim wbDest as excel.workbook, dim wsDest as excel.worksheet for example. This way I never have to worry about what the active sheet is.

    I also wondered about the use of .show - if.show <>-1, and can't help feeling that it would be easier for people to understand if instead you used if.show = false.

    And in terms of writing to the destination, I felt that using cells and formula seemed to be a long way round

    So in my code I have, for example,
    wsDest.Range("B" & CurRow) = fil.name
    (CurRow = Current Row)

    I'm not criticising, just wondering if you do it like this for any reason other than personal preference. - Always willing to learn


    But apart from that thanks for the help
  • To post as a guest, your comment is unpublished.
    Ana · 1 years ago
    Thank you so much for the useful article!
    How can I automatically update the list and spot the changes?
  • To post as a guest, your comment is unpublished.
    Ankit · 1 years ago
    Not sure.. but does it consider long folders. i wrote a similar code and it fails where the folder/file path exceeds 256 characters ? Thoughts please ?
  • To post as a guest, your comment is unpublished.
    Nir · 1 years ago
    great!!! love it, thanks
  • To post as a guest, your comment is unpublished.
    SATISH · 1 years ago
    HOWTO MAKE THIS QUERY WORK TO GET THE FILENAMES LISTED FROM B2 cell instead of A2 ?
    • To post as a guest, your comment is unpublished.
      skyyang · 1 years ago
      Hi, Satish,
      The following code can help you to put the filenames to any cell you selected, please try it:

      Sub MainList()
      On Error Resume Next
      Set xRg = Application.InputBox("Please select a cell to put the filenames:", "KuTools For Excel", Selection.Address, , , , , 8)
      If xRg Is Nothing Then Exit Sub
      Set xRg = xRg(1)
      Set Folder = Application.FileDialog(msoFileDialogFolderPicker)
      If Folder.Show <> -1 Then Exit Sub
      xDir = Folder.SelectedItems(1)
      Call ListFilesInFolder(xRg, xDir, True)
      End Sub
      Sub ListFilesInFolder(ByVal xRg As Range, ByVal xFolderName As String, ByVal xIsSubfolders As Boolean)
      Dim xFileSystemObject As Object
      Dim xFolder As Object
      Dim xSubFolder As Object
      Dim xFile As Object
      Dim rowIndex As Long
      Set xFileSystemObject = CreateObject("Scripting.FileSystemObject")
      Set xFolder = xFileSystemObject.GetFolder(xFolderName)
      rowIndex = 1
      For Each xFile In xFolder.Files
      xRg.Formula = xFile.Name
      Set xRg = xRg.Offset(rowIndex)
      rowIndex = 1
      Next xFile
      If xIsSubfolders Then
      For Each xSubFolder In xFolder.SubFolders
      ListFilesInFolder xRg, xSubFolder.Path, True
      Next xSubFolder
      End If
      Set xFile = Nothing
      Set xFolder = Nothing
      Set xFileSystemObject = Nothing
      End Sub
  • To post as a guest, your comment is unpublished.
    Anilkumar · 2 years ago
    dear,

    Thanks for this wonderful utility.....!!!


    anilkumar
  • To post as a guest, your comment is unpublished.
    Adrian Badea · 3 years ago
    Good article

    Thanks :D