Note: The other languages of the website are Google-translated. Back to English

Hoe alle bestanden in mappen en submappen in een werkblad weergeven?

Heb je ooit geprobeerd om alle bestandsnamen uit een map in een werkblad op te nemen, inclusief de bestanden in de submappen? In feite is er voor ons geen directe manier om de bestandsnamen uit een map en zijn submap in Excel weer te geven, 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

Maak een lijst van alle bestandsnamen in de map en submap snel en gemakkelijk met Kutools voor Excel


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 op te lossen.

1. Activeer een nieuw werkblad met de bestandsnamen.

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

3. Klikken Invoegen > Moduleen plak de volgende code in het Module Venster.

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

Sub MainList()
'Updateby Extendoffice
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. Druk op nadat u de code in de module hebt geplakt F5 sleutel om deze code uit te voeren, en een Macro's dialoogvenster verschijnt, selecteert u het Hoofdlijst macronaam en klik vervolgens op lopen knop, zie screenshot:

documentenlijstbestanden in submap 1

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

documentenlijstbestanden in submap 2

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

documentenlijstbestanden in submap 3
1
documentenlijstbestanden in submap 4

Met bovenstaande code kun je gewoon de bestandsnamen vermelden, soms moet je andere attributen vermelden, zoals bestandsgrootte, bestandstype, aangemaakte tijd, map bevatten en zo. Kutools for Excel bevat een handige functie - Bestandsnaam lijstMet deze functie kunt u snel alle of specifieke typen bestandsnamen in een map en zijn submappen weergeven.

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

Na het installeren van Kutools for Excel, voer de volgende stappen uit:

1. Klikken Enterprise > Importeren en exporteren > Bestandsnaam lijst, zie screenshot:

2. In de Bestandsnaam lijst dialoogvenster voert u de volgende bewerkingen uit:

A: Klik documentenlijstbestanden in submap 7knop om de map te kiezen waarvan u de bestandsnamen wilt weergeven;

B: Specificeer het bestandstype dat u wilt weergeven in het Bestanden type sectie;

C: Selecteer een bestandsgrootte-eenheid die u wilt weergeven uit de Bestandsgrootte eenheid pagina.

Opmerking:: Controleer om de bestandsnamen uit de submap weer te geven Voeg bestanden toe aan submappen, kunt u ook de Inclusief verborgen bestanden en mappen zoals je nodig hebt. Als je het controleert Maak hyperlinks optie, het maakt hyperlinks voor elke bestandsnaam en map.

Download en probeer nu gratis!

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

documentenlijstbestanden in submap 8

Klik voor meer details over dit hulpprogramma Bestandslijst.

Download en gratis proef Kutools voor Excel nu!


Kutools for Excel: met meer dan 300 handige Excel-invoegtoepassingen, gratis te proberen zonder beperking in 30 dagen. Download en probeer nu gratis!

De beste tools voor kantoorproductiviteit

Kutools voor Excel lost de meeste van uw problemen op en verhoogt uw productiviteit met 80%

  • visfuik: Snel invoegen complexe formules, grafieken en alles wat je eerder hebt gebruikt; Versleutel cellen met wachtwoord; Maak een mailinglijst en stuur e-mails ...
  • Super Formula-balk (bewerk eenvoudig meerdere regels tekst en formule); Lay-out lezen (gemakkelijk grote aantallen cellen lezen en bewerken); Plakken in gefilterd bereik...
  • Voeg cellen / rijen / kolommen samen zonder gegevens te verliezen; Gespleten cellen inhoud; Combineer dubbele rijen / kolommen... Voorkom dubbele cellen; Vergelijk Ranges...
  • Selecteer Dupliceren of Uniek Rijen; Selecteer lege rijen (alle cellen zijn leeg); Super zoeken en fuzzy zoeken in veel werkboeken; Willekeurige selectie ...
  • Exacte kopie Meerdere cellen zonder de formuleverwijzing te wijzigen; Maak automatisch verwijzingen naar meerdere bladen; Plaats kogels, Selectievakjes en meer ...
  • Extraheer tekst, Tekst toevoegen, Verwijderen op positie, Ruimte verwijderen; Paging-subtotalen maken en afdrukken; Converteren tussen celinhoud en opmerkingen...
  • Super filter (bewaar en pas filterschema's toe op andere bladen); Geavanceerd sorteren 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-2021 en 365. Ondersteunt alle talen. Eenvoudig te implementeren in uw onderneming of organisatie. Volledige functies Gratis proefperiode van 30 dagen. 60 dagen geld-terug-garantie.
kte tabblad 201905

Office-tabblad Brengt een interface met tabbladen naar Office en maakt uw werk veel gemakkelijker

  • Schakel bewerken en lezen met tabbladen in Word, Excel, PowerPoint in, 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 vermindert honderden muisklikken voor u elke dag!
officetab onderkant
Heb je vragen? Stel ze hier. (20)
Nog geen beoordelingen. Beoordeel als eerste!
Deze opmerking is gemaakt door de moderator op de site
Goed artikel Bedankt :D
Deze opmerking is gemaakt door de moderator op de site
beste, bedankt voor dit geweldige hulpprogramma ......!!! anilkumar
Deze opmerking is gemaakt door de moderator op de site
HOE KAN DEZE QUERY WERKEN OM DE BESTANDSNAMEN UIT B2-cel in plaats van A2 TE KRIJGEN?
Deze opmerking is gemaakt door de moderator op de site
Hallo Satis,
De volgende code kan u helpen om de bestandsnamen in elke geselecteerde cel te plaatsen, probeer het alstublieft:

Sub hoofdlijst()
On Error Resume Next
Set xRg = Application.InputBox("Selecteer een cel om de bestandsnamen in te voeren:", "KuTools For Excel", Selection.Address, , , , , 8)
Als xRg niets is, sluit dan Sub af
Stel xRg = xRg(1) in
Map instellen = Application.FileDialog(msoFileDialogFolderPicker)
If Folder.Toon <> -1 Dan Sub afsluiten
xDir = Map.SelectedItems(1)
OproeplijstFilesInFolder(xRg, xDir, True)
End Sub
Sub ListFilesInFolder (ByVal xRg As Range, ByVal xFolderName As String, ByVal xIsSubfolders As Boolean)
Dim xFileSystemObject als object
Dim xFolder als object
Dim xSubmap als object
Dim xBestand als object
Dim rijIndex zo lang
Stel xFileSystemObject = CreateObject ("Scripting.FileSystemObject") in
Stel xFolder = xFileSystemObject.GetFolder(xFolderName) in
rijIndex = 1
Voor elke xFile in xFolder.Files
xRg.Formule = xBestand.Naam
Stel xRg = xRg.Offset (rijIndex) in
rijIndex = 1
Volgende xBestand
Als xIsSubmappen Dan
Voor elke xSubFolder in xFolder.SubFolders
ListFilesInFolder xRg, xSubFolder.Path, True
Volgende xSubmap
End If
Stel xFile = Niets in
Stel xFolder = Niets in
Stel xFileSystemObject = Niets in
End Sub
Deze opmerking is gemaakt door de moderator op de site
groot!!! hou ervan, bedankt
Deze opmerking is gemaakt door de moderator op de site
Niet zeker.. maar houdt het rekening met lange mappen. ik heb een soortgelijke code geschreven en het mislukt waar het pad van de map / het bestand de 256 tekens overschrijdt? Gedachten alstublieft?
Deze opmerking is gemaakt door de moderator op de site
Heel erg bedankt voor het nuttige artikel!
Hoe kan ik de lijst automatisch bijwerken en de wijzigingen zien?
Deze opmerking is gemaakt door de moderator op de site
Dit heeft me geholpen om mijn code te converteren om de recursieve oproep te krijgen, maar ik vraag me af hoe je objecten gebruikt. Ik geef er de voorkeur aan om mijn objecten te definiëren zoals ze zijn, of het nu werkmappen, werkbladen of bestandssysteemobjecten zijn. (dim wbDest als excel.workbook, dim wsDest als excel.worksheet bijvoorbeeld. Op deze manier hoef ik me nooit zorgen te maken over wat het actieve blad is.

Ik vroeg me ook af wat het gebruik van .show - if.show <>-1 is, en ik krijg het gevoel dat het voor mensen gemakkelijker te begrijpen is als je in plaats daarvan if.show = false gebruikt.

En wat betreft het schrijven naar de bestemming, voelde ik dat het gebruik van cellen en formule een lange weg leek te zijn

Dus in mijn code heb ik, bijvoorbeeld,
wsDest.Range("B" & CurRow) = fil.naam
(CurRow = huidige rij)

Ik bekritiseer niet, ik vraag me alleen af ​​of je het zo doet om een ​​andere reden dan persoonlijke voorkeur. - Altijd bereid om te leren


Maar verder bedankt voor de hulp
Deze opmerking is gemaakt door de moderator op de site
Bedankt voor deze code, het heeft me geholpen met een verzoek om een ​​werk, ik kan deze resultaten nu in Access importeren voor verdere transformatie. Waardeer het.
Deze opmerking is gemaakt door de moderator op de site
Sub "GetFileOwner()" in bovenstaande code wordt niet gebruikt.
Deze opmerking is gemaakt door de moderator op de site
Hallo, jumpjack,
Bovenstaande code werkt goed in mijn Excel, welke Excel versie gebruik je?
Deze opmerking is gemaakt door de moderator op de site
Extremamente elegante est código!
Deze opmerking is gemaakt door de moderator op de site
Wat was het doel van de parameter ByVal xIsSubfolders As Boolean?
Deze opmerking is gemaakt door de moderator op de site
Mijn VBA zegt dat de variabele map niet is gedefinieerd. Weet iemand waarom dit is?
Deze opmerking is gemaakt door de moderator op de site
Echt nieuw voor VBA. hoe gebruik ik de bovenstaande code, maar heb ik het bestandspad erin ingebouwd, zodat ik er niet elke keer naar hoef te zoeken?
Deze opmerking is gemaakt door de moderator op de site
Hé, dus als ik gewoon een extensie uit de hele lijst moet halen, waar moet ik dan wijzigingen aanbrengen?
Deze opmerking is gemaakt door de moderator op de site
Werkt het ook op MAC?
Deze opmerking is gemaakt door de moderator op de site
Ik heb je code aangepast om het te laten recyclen en herhaal het mapdialoogvenster continu totdat je op Annuleren drukt. Helaas genereert het enkele fouten.1. Als submappen betrokken raken bij een geselecteerde map, komt de volgende geselecteerde map uit de numerieke volgorde.2. Als er submappen betrokken raken bij een geselecteerde map, moet de knop Annuleren worden herhaald en herhaald, afhankelijk van het aantal mappen dat u hebt toegevoegd.
Code:
Sub hoofdlijst()
'Bijwerken door' Extendoffice
Map instellen = Application.FileDialog(msoFileDialogFolderPicker)
Als map.Toon <> -1 Dan Sub afsluiten
xDir = map.SelectedItems(1)
OproeplijstFilesInFolder(xDir, True)
End SubSub ListFilesInFolder (ByVal xFolderName As String, ByVal xIsSubfolders As Boolean)
Dim xFileSystemObject als object
Dim xFolder als object
Dim xSubmap als object
Dim xBestand als object
Dim rijIndex zo lang
Stel xFileSystemObject = CreateObject ("Scripting.FileSystemObject") in
Stel xFolder = xFileSystemObject.GetFolder(xFolderName) in
rowIndex = Application.ActiveSheet.Range("A65536").End(xlUp).Rij + 1
Voor elke xFile in xFolder.Files
Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
rijIndex = rijIndex + 1
Volgende xBestand
Als xIsSubmappen Dan
Voor elke xSubFolder in xFolder.SubFolders
ListFilesInFolder xSubFolder.Path, waar
Volgende xSubmap
End If
Stel xFile = Niets in
Stel xFolder = Niets in
Stel xFileSystemObject = Niets in
End Sub

ideeën?
Deze opmerking is gemaakt door de moderator op de site
Sorry... Ik heb je de verkeerde code gegeven (hieronder), hier is de code die ik heb aangepast..
Code:
Sub hoofdlijst()
On Error Resume Next
Dim xFileSystemObject als object
Dim xFolder als object
Dim xSubmap als object
Dim xBestand als object
Dim rijIndex zo lang
Gedimd antwoord als variant
antwoord = niet waar
Met Application.FileDialog (msoFileDialogFolderPicker)
.Title = "Selecteer een map"
.AllowMultiSelect = Onwaar
Map instellen = Application.FileDialog(msoFileDialogFolderPicker)
Als map.Toon = -1 Dan
xDir = map.SelectedItems(1)
Anders
Exit Sub
End If
Eindigt met

OproeplijstFilesInFolder(xDir, True)
End Sub

SublijstFilesInFolder(ByVal xFolderName As String, ByVal xIsSubfolders As Boolean)
Stel xFileSystemObject = CreateObject ("Scripting.FileSystemObject") in
Stel xFolder = xFileSystemObject.GetFolder(xFolderName) in
rowIndex = Application.ActiveSheet.Range("A65536").End(xlUp).Rij + 1

'Voeg een spatie toe en vervolgens de mapnaam aan het werkblad
rijIndex = rijIndex + 1
Met Application.ActiveSheet.Cells(rowIndex, 1)
.Waarde = xMap.Naam
Lettergrootte = 12
.Font.FontStyle = "Vet cursief"
Eindigt met
rijIndex = rijIndex + 1

Voor elke xFile in xFolder.Files
Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
rijIndex = rijIndex + 1
Volgende xBestand
Als xIsSubmappen Dan
Voor elke xSubFolder in xFolder.SubFolders
ListFilesInFolder xSubFolder.Path, waar
Volgende xSubmap
rijIndex = rijIndex + 1
End If

Stel xFile = Niets in
Stel xFolder = Niets in
Stel xFileSystemObject = Niets in

Bel hoofdlijst
End Sub


Deze opmerking is gemaakt door de moderator op de site
Mooi werk, precies wat ik probeerde te creëren. Maar dit is 1000% beter.
Er zijn nog geen reacties geplaatst
Laat uw commentaar
Posten als gast
×
Beoordeel dit bericht:
0   Personages
Voorgestelde locaties

Volg ons

Copyright © 2009 - www.extendoffice.com. | Alle rechten voorbehouden. Aangedreven door ExtendOffice. | Sitemap
Microsoft en het Office-logo zijn handelsmerken of gedeponeerde handelsmerken van Microsoft Corporation in de Verenigde Staten en / of andere landen.
Beschermd door Sectigo SSL