Lijst bestanden in een map met VBA in Microsoft Excel

Anonim

In dit artikel zullen we een macro maken om alle bestanden in de map weer te geven.

Bij het uitvoeren van de macro wordt de bestandsnaam samen met het bestandspad weergegeven vanaf cel A17.

Logische uitleg

In dit artikel hebben we twee macro's gemaakt, "subfolder_files" en "getting_filelist_in_folder".
De macro "subfolder_files" neemt het mappad en de booleaanse waarde als invoer en retourneert de bestandsnaam in de map.

"getting_filelist_in_folder" wordt gebruikt om de macro "subfolder_files" aan te roepen. Het geeft de mappadwaarde naar de macro, met de booleaanse waarde ingesteld op 'true'. Ook als bestandsnamen binnen de submappen vereist zijn, kennen we de booleaanse waarde 'true' toe.

Code uitleg

folder_path = Blad1.TextBox1.Waarde
De bovenstaande code wordt gebruikt om de tekenreekswaarde uit het tekstvak te extraheren.

Bel subfolder_files(folder_path, True)
De bovenstaande code wordt gebruikt om de macro "subfolder_files" aan te roepen. Het wijst het mappad toe en stelt de eigenschap "include_subfolder" in op true.

Stel fso = CreateObject("scripting.filesystemobject") in
De bovenstaande code wordt gebruikt om een ​​object van het bestandssysteem te maken.

Stel submap1 in = fso.getfolder(mappad)
De bovenstaande code wordt gebruikt om het object van de gedefinieerde map te maken.

Voor elke map1 In submap1.submappen
Roep subfolder_files(folder1, True) aan
Volgende
De bovenstaande code wordt gebruikt om door alle submappen in de hoofdmap te bladeren.

Dir(mappad1 & "*.xlsx")
De bovenstaande code wordt gebruikt om de Excel-bestandsnaam te krijgen.

Terwijl bestandsnaam ""
tel1 = tel1 + 1
ReDim Bestandsarray behouden (1 om te tellen1)
filearray(count1) = bestandsnaam
bestandsnaam = Dir()
Wend

De bovenstaande code wordt gebruikt om een ​​array te maken, die bestaat uit alle bestandsnamen die in de map aanwezig zijn.

Voor i = 1 Naar UBound (bestandsarray)
Cellen (laatste rij, 1). Waarde = mappad1 & filearray (i)
laatste rij = laatste rij + 1
Volgende

De bovenstaande code wordt gebruikt om de bestandsnaam binnen de array aan de werkmap toe te wijzen.

Volg hieronder voor de code:

 Optie Explicit Sub subfolder_files(folderpath1 As Variant, Optioneel include_subfolder As Boolean) 'Controleren of submap moet worden opgenomen of niet If include_subfolder Then 'Variabelen declareren Dim filename, filearray() As String Dim lastrow, count1, i As Integer 'Controleren of mappad bevat backslash als laatste teken If Right(folderpath1, 1) "\" Then folderpath1 = folderpath1 & "\" End If 'De bestandsnaam van het eerste bestand in de gedefinieerde map path filename = Dir(folderpath1 & "*.xlsx") ' Het rijnummer van de laatste cel ophalen lastrow = ActiveCell.SpecialCells(xlCellTypeLastCell).Row + 1 count1 = 0 'Door alle bestanden in de map bladeren Terwijl bestandsnaam "" count1 = count1 + 1 ReDim Preserve filearray(1 To count1) filearray( count1) = bestandsnaam bestandsnaam = Dir() Wend On Error GoTo last 'Bestandsnaam toevoegen aan werkmap For i = 1 To UBound(filearray) Cells(lastrow, 1).Value = folderpath1 & filearray(i) lastrow = lastrow + 1 Next Einde Indien laatste: Einde Sub Sub get_filelist_in_folder () 'Declareren van variabelen Dim folder_path As String Dim fso As Object, folder1, subfolder1 As Object 'Pad van de map ophalen folder_path = Sheet1.TextBox1.Value 'Controleren of mappad backslash bevat als laatste teken If Right(folder_path, 1) " \" Then folder_path = folder_path & "\" End If 'Bellen subfolder_files macro Call subfolder_files(folder_path, True) 'Creëren van object van File system object Set fso = CreateObject("scripting.filesystemobject") Set subfolder1 = fso.getfolder(folder_path) 'Door elke submap bladeren Voor elke map1 In submap1.subfolders Subfolder_files(folder1, True) Volgende Einde 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