Lijst met details van alle bestanden in een map met VBA in Microsoft Excel

Anonim

In dit artikel zullen we een macro maken om details van alle bestanden in een map te verzamelen.

Voordat we de macro uitvoeren, moeten we het pad van de map in het tekstvak specificeren.

Bij het uitvoeren van de macro zal het Bestandsnaam, Bestandspad, Bestandsgrootte, Datum gemaakt en Datum laatst gewijzigd van alle bestanden in de map retourneren.

Logische uitleg

In dit artikel hebben we twee macro's "ListFilesInFolder" en "TestListFilesInFolder" gemaakt.

De macro "ListFilesInFolder" geeft details weer met betrekking tot alle bestanden in de map.

De macro "TestListFilesInFolder" wordt gebruikt om de koptekst op te geven en de macro "ListFilesInFolder" aan te roepen.

Code uitleg

Stel FSO = CreateObject ("Scripting.FileSystemObject") in

De bovenstaande code wordt gebruikt om een ​​nieuw object of bestandssysteemobject te maken.

Stel SourceFolder = FSO.GetFolder (Bronmapnaam) in

De bovenstaande code wordt gebruikt om een ​​object te maken van de map die is opgegeven door het pad.

Cellen(r, 1).Formule = Bestandsitem.Naam

Cellen(r, 2).Formule = FileItem.Path

Cellen(r, 3).Formule = FileItem.Size

Cellen(r, 4).Formule = FileItem.DateCreated

Cellen(r, 5).Formule = FileItem.DateLastModified

De bovenstaande code wordt gebruikt om details van de bestanden te extraheren.

Voor elke submap in SourceFolder.SubFolders

'Dezelfde procedure aanroepen voor submappen'

ListFilesInFolder SubFolder.Path, True

Volgende submap

De bovenstaande code wordt gebruikt om details van alle bestanden in submappen te extraheren.

Kolommen ("A:E").Selecteer

Selectie.ClearInhoud

De bovenstaande code wordt gebruikt om inhoud van kolom A tot E te verwijderen.

Volg hieronder voor de code:

 Optie Explicit Sub ListFilesInFolder(ByVal SourceFolderName As String, ByVal IncludeSubfolders As Boolean) 'Variabelen dimmen FSO As Object Dim SourceFolder As Object Dim Submap As Object Dim FileItem As Object Dim r As Long 'Object van FileSystemObject Set maken(" =CreateObject) .FileSystemObject") Set SourceFolder = FSO.GetFolder(SourceFolderName) r = Range("A65536").End(xlUp).Row + 1 For Each FileItem In SourceFolder.Files 'Bestandseigenschappen weergeven Cellen(r, 1).Formula = FileItem.Name Cells(r, 2).Formula = FileItem.Path Cells(r, 3).Formula = FileItem.Size Cells(r, 4).Formula = FileItem.DateCreated Cells(r, 5).Formula = FileItem. DateLastModified r = r + 1 Next FileItem 'Bestanden in submappen ophalen If IncludeSubfolders Then For Each SubFolder In SourceFolder.SubFolders 'Dezelfde procedure aanroepen voor submappen ListFilesInFolder SubFolder.Path, True Next SubFolder End If Set FileItem = Nothing Set SourceFolder = Nothing Set FSO = Niets ActiveWorkbook.Saved = True End Sub Sub TestListFilesInFolder() 'Variabele Dim FolderPath als string declareren 'Schermupdates uitschakelen Application.ScreenUpdating = False 'Het mappad ophalen uit tekstvak FolderPath = Sheet1.TextBox1.Value ActiveSheet.Activate 'De inhoud van kolommen A:E Columns wissen ("A:E").Selecteer Selectie.ClearContents 'Add headers Range("A14").Formula = "File Name:" Range("B14").Formula = "Pad:" Range("C14").Formula = "Bestandsgrootte:" Range("D14").Formula = "Datum gemaakt:" Range("E14").Formula = "Datum laatst gewijzigd:" 'Opmaak van de headers Range("A14:E14").Lettertype .Bold = True 'Calling ListFilesInFolder macro ListFilesInFolder FolderPath, True 'Automatisch aanpassen van de grootte van de kolommen Columns("A:E").Select Selection.Columns.AutoFit Range("A1").Select End Sub 

Als je deze blog leuk vond, deel hem dan met je vrienden op Facebook. Ook kunt u ons volgen op Twitter en Facebook.

We horen graag van u, laat ons weten hoe we ons werk kunnen verbeteren en voor u kunnen verbeteren. Schrijf ons op de e-mailsite