I denne artikkelen vil vi lage en makro for å vise alle filene i mappen.
Når du kjører makroen, vises filnavnet sammen med filbanen fra celle A17.
Logisk forklaring
I denne artikkelen har vi opprettet to makroer, "undermappe_filer" og "å få_filelist_in_mappe".
Makroen "undermappe_filer" tar mappebanen og den boolske verdien som inndata og returnerer filnavnet i mappen.
“Getting_filelist_in_folder” brukes til å kalle makroen “undermappe_filer”. Den gir mappebanen verdi til makroen, med boolsk verdi satt 'true'. Når filnavn i undermappene er påkrevd, tildeler vi boolsk verdi "true".
Kode forklaring
folder_path = Sheet1.TextBox1.Value
Koden ovenfor brukes til å trekke ut strengverdi fra tekstboksen.
Ring til undermappe_filer (mappe_bane, True)
Koden ovenfor brukes til å kalle makroen "undermappe_filer". Den tilordner mappebanen og angir "include_subfolder" -egenskapen true.
Sett fso = CreateObject ("scripting.filesystemobject")
Koden ovenfor brukes til å lage objekt for filsystemet.
Angi undermappe1 = fso.getfolder (mappebane)
Koden ovenfor brukes til å lage objektet til den definerte mappen.
For hver mappe1 I undermappe1 .undermapper
Ring til undermappe_filer (mappe1, sann)
Neste
Koden ovenfor brukes til å se gjennom alle undermappene i hovedmappen.
Dir (folderpath1 & "*.xlsx")
Koden ovenfor brukes til å få excel -filnavnet.
Mens filnavnet ""
telle1 = telle1 + 1
ReDim Preserve filearray (1 å telle1)
filearray (count1) = filnavn
filnavn = Dir ()
Wend
Koden ovenfor brukes til å lage en matrise, som består av alle filnavnene som finnes i mappen.
For i = 1 Til UBound (filearray)
Celler (lastrow, 1) .Value = folderpath1 & filearray (i)
lastrow = lastrow + 1
Neste
Koden ovenfor brukes til å tilordne filnavnet i matrisen til arbeidsboken.
Følg koden nedenfor
Alternativ Eksplisitt undermappe_filer (mappebane1 som variant, valgfri inkludere_undermappe som boolsk) 'Kontrollere om du vil inkludere undermappe eller ikke Hvis inkludere_undermappe deretter' Deklarere variabler Dim filnavn, filearray () As String Dim lastrow, count1, i As Integer 'Kontrollerer om mappebanen inneholder backslash som siste tegn Hvis høyre (mappebane1, 1) "\" Deretter mappebane1 = mappebane1 og "\" Avslutt hvis 'Henter filnavnet til den første filen i den definerte mappebanen filnavn = Dir (mappebane1 og "*.xlsx")' Få radnummeret til siste celle lastrow = ActiveCell.SpecialCells (xlCellTypeLastCell) .Rad + 1 count1 = 0 'Sløyfe gjennom alle filene i mappen Mens filnavn "" count1 = count1 + 1 ReDim Preserve filearray (1 To count1) filearray ( count1) = filnavn filnavn = Dir () Gå på feil Gå til siste 'Legge til filnavn i arbeidsbok For i = 1 Til UBound (filearray) Celler (lastrow, 1) .Value = folderpath1 & filearray (i) lastrow = lastrow + 1 Next Slutt hvis sist: Slutt Sub Sub får_filelist_in_mappe () 'Deklarere variabler Dim mappe_bane som streng Dim fso Som objekt, mappe1, undermappe1 Som objekt' Hente banen til mappen folder_path = Sheet1.TextBox1.Value 'Kontrollerer om mappebanen inneholder bakoverstrekk som siste tegn Hvis høyre (mappe_bane, 1) " \ "Then folder_path = folder_path &" \ "End If 'Calling subfolder_files macro Call subfolder_files (folder_path, True)' Creating object of File system object Set fso = CreateObject (" scripting.filesystemobject ") Set subfolder1 = fso.getfolder (folder_path) 'Sløyfe gjennom hver undermappe For hver mappe1 I undermappe1.undermapper Ring til undermappe_filer (mappe1, True) Neste slutt Sub
Hvis du likte denne bloggen, del den med vennene dine på Facebook. Du kan også følge oss på Twitter og Facebook.
Vi vil gjerne høre fra deg, gi oss beskjed om hvordan vi kan forbedre arbeidet vårt og gjøre det bedre for deg. Skriv til oss på e -post