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

Hogyan lehet mappába és almappákba tartozó összes fájlt felsorolni egy munkalapba?

Megpróbálta már felsorolni egy mappa összes fájlnevét egy munkalapra, beleértve az almappáiban található fájlokat is? Valójában nincs közvetlen módszer arra, hogy az mappából és annak almappájából származó fájlneveket felsoroljuk az Excel programban, azonban ma bemutatok néhány gyors trükköt ennek a feladatnak a megoldására.

Sorolja fel az összes fájlnevet mappában és almappában VBA kóddal

Az összes fájlnév gyorsan és egyszerűen felsorolható a mappában és az almappában a Kutools for Excel alkalmazással


Általában az Excel nem rendelkezik beépített funkcióval a feladat kezelésére, de a probléma megoldásához a következő VBA kódot alkalmazhatja.

1. Aktiváljon egy új munkalapot, amely felsorolja a fájlneveket.

2. Tartsa lenyomva a ALT + F11 kulcsokat az Excelben, és megnyitja a Microsoft Visual Basic for Applications ablak.

3. Kattints betétlap > Modulok, és illessze be a következő kódot a Modul ablak.

VBA kód: Sorolja fel az összes fájlnevet a mappában és az almappában

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. Miután beillesztette a kódot a modulba, nyomja meg a gombot F5 kulcs a kód futtatásához, és a makrók megjelenik a párbeszédpanel, válassza a ikont Fő lista makró neve, majd kattintson a gombra futás gomb, lásd a képernyőképet:

doc list fájlok a mappa almappájában 1

5. És a Tallózás ablakban, válassza ki azt a mappát, amelybe az összes fájlnevet fel szeretné sorolni, beleértve az almappákat is, lásd a képernyőképet:

doc list fájlok a mappa almappájában 2

6. A mappa megadása után kattintson a gombra OK gombra, és a mappa és annak almappáinak összes fájlneve fel van sorolva az aktuális munkalapra az A2 cellából, lásd a képernyőképeket:

doc list fájlok a mappa almappájában 3
1
doc list fájlok a mappa almappájában 4

A fenti kóddal egyszerűen felsorolhatja a fájlneveket, néha fel kell sorolnia más attribútumokat is, például a fájl méretét, a fájltípust, a létrehozási időt, a mappát és így tovább. Kutools az Excel számára hasznos funkciót tartalmaz - Fájlnév lista, ezzel a szolgáltatással gyorsan felsorolhatja az összes vagy bizonyos típusú fájlneveket egy mappában és annak almappáiban.

Kutools az Excel számára : több mint 300 praktikus Excel-bővítménnyel, ingyenesen, korlátozás nélkül, 30 nap alatt kipróbálható.

Telepítése után Kutools az Excel számára, kérjük, tegye a következőket:

1. Kattints Vállalkozás > Import Export > Fájlnév lista, lásd a képernyőképet:

2. Az Fájlnév lista párbeszédpanelen hajtsa végre a következő műveleteket:

A: Kattintson doc list fájlok a mappa almappájában 7gombra, hogy kiválassza a mappát, amelybe fel kívánja sorolni a fájlneveket;

B: Adja meg a fájltípust, amelyet fel kíván sorolni a Fájlok típusa szakasz;

C: Válasszon ki egy megjelenítendő fájlméret-egységet a Fájlméret egység szakasz.

Megjegyzések: A fájlnevek listázásához az almappából ellenőrizze Fájlok felvétele az alkönyvtárakba, ellenőrizheti a Tartalmazzon rejtett fájlokat és mappákat ahogy kell. Ha megnézi Hiperhivatkozások létrehozása opcióval hiperhivatkozásokat hoz létre az egyes fájlnevekhez és mappákhoz.

Töltse le és ingyenes próbaverziót most!

3. Ezután kattintson OK gombra kattintva a kiválasztott mappában és annak almappáiban található összes fájl a következő attribútumokkal jelenik meg egy új munkalapon. Lásd a képernyőképet:

doc list fájlok a mappa almappájában 8

Kattintson ide a fájlnévlista segédprogram további részleteinek megismeréséhez.

Töltse le és ingyenes próbaverziót Kutools for Excel Now!


Kutools az Excel számára: több mint 300 praktikus Excel-bővítménnyel, ingyenesen, korlátozás nélkül, 30 nap alatt kipróbálható. Töltse le és ingyenes próbaverziót most!

A legjobb irodai termelékenységi eszközök

A Kutools for Excel megoldja a legtöbb problémát, és 80% -kal növeli a termelékenységet

  • újrafelhasználás: Gyorsan helyezze be összetett képletek, diagramok és bármi, amit korábban használt; Cellák titkosítása jelszóval; Levelezőlista létrehozása és e-maileket küldeni ...
  • Szuper Formula Bár (könnyedén szerkeszthet több szöveget és képletet); Olvasás elrendezés (könnyen olvasható és szerkeszthető nagyszámú cella); Beillesztés a Szűrt tartományba...
  • Cellák / sorok / oszlopok egyesítése az adatok elvesztése nélkül; Osztott cellák tartalma; Kombinálja a duplikált sorokat / oszlopokat... megakadályozza az ismétlődő cellákat; Hasonlítsa össze a tartományokat...
  • Válassza a Másolat vagy az Egyedi lehetőséget Sorok; Válassza az Üres sorok lehetőséget (az összes cella üres); Super Find és Fuzzy Find sok munkafüzetben; Véletlenszerű kiválasztás ...
  • Pontos másolás Több cella a képletreferencia megváltoztatása nélkül; Automatikus referenciák létrehozása több lapra; Helyezze be a golyókat, Jelölőnégyzetek és még sok más ...
  • Kivonat szöveg, Szöveg hozzáadása, Eltávolítás pozíció szerint, Hely eltávolítása; Hozz létre és nyomtasson személyhívó részösszegeket; Konvertálás a cellatartalom és a megjegyzések között...
  • Szuper szűrő (mentse el és alkalmazza a szűrősémákat más lapokra); Haladó rendezés hónap / hét / nap, gyakoriság és egyebek szerint; Speciális szűrő félkövér, dőlt betűvel ...
  • Kombinálja a munkafüzeteket és a munkalapokat; Táblázatok egyesítése kulcsoszlopok alapján; Az adatok felosztása több lapra; Kötegelt konvertálás xls, xlsx és PDF...
  • Több mint 300 hatékony funkció. Támogatja az Office / Excel 2007-2021 és 365 verziókat. Minden nyelvet támogat. Könnyű üzembe helyezés vállalatában vagy szervezetében. Teljes funkciók 30 napos ingyenes próbaverzió. 60 napos pénzvisszafizetési garancia.
kte lap 201905

Az Office fül a füles felületet hozza az Office-ba, és sokkal könnyebbé teszi a munkáját

  • Füles szerkesztés és olvasás engedélyezése Wordben, Excelben és PowerPointban, Publisher, Access, Visio és Project.
  • Több dokumentum megnyitása és létrehozása ugyanazon ablak új lapjain, mint új ablakokban.
  • 50% -kal növeli a termelékenységet, és naponta több száz kattintással csökkenti az egér kattintását!
officetab alja
A megjegyzések rendezése szerint
Hozzászólások (20)
Még nincs értékelés. Legyen Ön az első, aki értékel!
A weboldal moderátora ezt a megjegyzést minimalizálta
Jó cikk köszi :D
A weboldal moderátora ezt a megjegyzést minimalizálta
kedves! Köszönjük ezt a csodálatos segédprogramot.....!!! anilkumar
A weboldal moderátora ezt a megjegyzést minimalizálta
HOGYAN LEHET MŰKÖDNI EZT A KÉRDEZÉST, HOGY A FÁJLNEVEK A2 helyett B2 cellából kerüljenek listába?
A weboldal moderátora ezt a megjegyzést minimalizálta
Szia Satish,
A következő kód segíthet a fájlnevek bármely kiválasztott cellába helyezésében, próbálkozzon vele:

Al MainList()
On Error Resume Next
Set xRg = Application.InputBox("Kérjük, válasszon ki egy cellát a fájlnevek megadásához:", "KuTools For Excel", Selection.Address, , , , , 8)
Ha az xRg semmi, akkor lépjen ki a Subból
Állítsa be az xRg = xRg(1)
Set Folder = Application.FileDialog(msoFileDialogFolderPicker)
Ha Folder.Show <> -1, majd Exit Sub
xDir = Mappa.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 objektumként
Dim xFolder mint objektum
Dim xSubFolder mint objektum
Dim xFile mint objektum
Dim rowIndex As Long
Set xFileSystemObject = CreateObject("Scripting.FileSystemObject")
Állítsa be az xFolder = xFileSystemObject.GetFolder(xFolderName)
sorIndex = 1
Minden xFolder.Files xFájlhoz
xRg.Formula = xFile.Name
Beállítás xRg = xRg.Eltolás(sorindex)
sorIndex = 1
Következő xFile
Ha xIsSubfolders Akkor
Minden xSubFolder számára az xFolder.SubFolders mappában
ListFilesInFolder xRg, xSubFolder.Path, True
Következő xSubFolder
Ha véget
Set xFile = Semmi
Set xFolder = Semmi
Set xFileSystemObject = Semmi
End Sub
A weboldal moderátora ezt a megjegyzést minimalizálta
nagy!!! tetszik, köszönöm
A weboldal moderátora ezt a megjegyzést minimalizálta
Nem biztos.. de figyelembe veszi a hosszú mappákat. írtam egy hasonló kódot, és nem sikerül, ha a mappa/fájl elérési útja meghaladja a 256 karaktert? Gondolatokat kérek?
A weboldal moderátora ezt a megjegyzést minimalizálta
Köszönöm szépen a hasznos cikket!
Hogyan tudom automatikusan frissíteni a listát és észrevenni a változásokat?
A weboldal moderátora ezt a megjegyzést minimalizálta
Ez segített átalakítani a kódomat, hogy megkapja a rekurzív hívást, de kíváncsi vagyok az objektumok használatára. Inkább úgy határozom meg az objektumaimat, mint amilyenek, legyenek azok munkafüzetek, munkalapok vagy fájlrendszer-objektumok. (Dim wbDest mint excel.workbook, dim wsDest mint excel.worksheet pl. Így soha nem kell aggódnom, hogy mi az aktív lap.

Elgondolkodtam a .show - if.show <>-1 használatán is, és nem tehetek róla, hogy az emberek könnyebben megértenék, ha helyette az if.show = false értéket használnád.

Ami pedig a célállomásra való írást illeti, úgy éreztem, hogy a cellák és a képlet használata hosszú útnak tűnt

Tehát a kódomban pl.
wsDest.Range("B" & CurRow) = fájlnév
(CurRow = jelenlegi sor)

Nem kritizálok, csak arra vagyok kíváncsi, hogy a személyes preferencián kívül más okból csinálja-e így. - Mindig hajlandó tanulni


De ettől eltekintve köszönöm a segítséget
A weboldal moderátora ezt a megjegyzést minimalizálta
Köszönöm ezt a kódot, segített a kérésben és a munkában, most már importálhatom ezeket az eredményeket az Accessbe további átalakítás céljából. Értékeljem.
A weboldal moderátora ezt a megjegyzést minimalizálta
A fenti kódban a „GetFileOwner()” alcím nem használatos.
A weboldal moderátora ezt a megjegyzést minimalizálta
Szia jumpjack,
A fenti kód jól működik az Excelben, melyik Excel verziót használja?
A weboldal moderátora ezt a megjegyzést minimalizálta
Extremamente elegante este código!
A weboldal moderátora ezt a megjegyzést minimalizálta
Mi volt a ByVal xIsSubfolders As Boolean paraméter célja?
A weboldal moderátora ezt a megjegyzést minimalizálta
A VBA-m azt mondja, hogy a változó mappa nincs megadva. Tudja valaki, hogy ez miért van?
A weboldal moderátora ezt a megjegyzést minimalizálta
Valóban új a VBA-ban. hogyan használhatom a fenti kódot, de be van építve a fájl elérési útja, hogy ne kelljen minden alkalommal keresnem?
A weboldal moderátora ezt a megjegyzést minimalizálta
Hé, ha ki kell bontanom egy kiterjesztést a teljes listából, hol kell módosítani?
A weboldal moderátora ezt a megjegyzést minimalizálta
MAC-on is működik?
A weboldal moderátora ezt a megjegyzést minimalizálta
Módosítottam a kódot, hogy újrahasznosítsa, és folyamatosan futtassa újra a mappa párbeszédpanelt, amíg meg nem nyomja a Mégse gombot. Sajnos néhány hibát generál.1. Ha az almappák belekeverednek egy kiválasztott mappába, akkor a következő kiválasztott mappa kiesik a számsorrendből.2. Ha egy kiválasztott mappában almappák vesznek részt, a Mégse gombot meg kell ismételni és meg kell ismételni attól függően, hogy hány mappát adott hozzá.
Kód:
Al MainList()
'Frissítés által Extendoffice
Mappa beállítása = Application.FileDialog(msoFileDialogFolderPicker)
Ha mappa.Megjelenítés <> -1 Majd Exit Sub
xDir = mappa.SelectedItems(1)
Call ListFilesInFolder(xDir, True)
End SubSub ListFilesInFolder (ByVal xFolderName karakterláncként, ByVal xIsSubfolders logikai értékként)
Dim xFileSystemObject objektumként
Dim xFolder mint objektum
Dim xSubFolder mint objektum
Dim xFile mint objektum
Dim rowIndex As Long
Set xFileSystemObject = CreateObject("Scripting.FileSystemObject")
Állítsa be az xFolder = xFileSystemObject.GetFolder(xFolderName)
rowIndex = Application.ActiveSheet.Range("A65536").End(xlUp).Sor + 1
Minden xFolder.Files xFájlhoz
Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
rowIndex = sorIndex + 1
Következő xFile
Ha xIsSubfolders Akkor
Minden xSubFolder számára az xFolder.SubFolders mappában
ListFilesInFolder xSubFolder.Path, igaz
Következő xSubFolder
Ha véget
Set xFile = Semmi
Set xFolder = Semmi
Set xFileSystemObject = Semmi
End Sub

bármilyen ötletet ?
A weboldal moderátora ezt a megjegyzést minimalizálta
Elnézést... Rossz kódot adtam meg (lent), itt van az általam módosított kód..
Kód:
Al MainList()
On Error Resume Next
Dim xFileSystemObject objektumként
Dim xFolder mint objektum
Dim xSubFolder mint objektum
Dim xFile mint objektum
Dim rowIndex As Long
Halvány válasz Variantként
válasz = Hamis
Az Application.FileDialog(msoFileDialogFolderPicker) segítségével
.Title = "Válasszon ki egy mappát"
.AllowMultiSelect = Hamis
Mappa beállítása = Application.FileDialog(msoFileDialogFolderPicker)
Ha mappa.Show = -1 Akkor
xDir = mappa.SelectedItems(1)
Más
Exit Sub
Ha véget
Vége

Call ListFilesInFolder(xDir, True)
End Sub

Sub ListFilesInFolder (ByVal xFolderName karakterláncként, ByVal xIsSubfolders logikai értékként)
Set xFileSystemObject = CreateObject("Scripting.FileSystemObject")
Állítsa be az xFolder = xFileSystemObject.GetFolder(xFolderName)
rowIndex = Application.ActiveSheet.Range("A65536").End(xlUp).Sor + 1

' Adjon hozzá egy szóközt, majd a mappa nevét a munkalaphoz
rowIndex = sorIndex + 1
Az Application.ActiveSheet.Cells(rowIndex, 1) paraméterrel
.Value = xFolder.Name
. Betűtípus.Méret = 12
.Font.FontStyle = "félkövér, dőlt"
Vége
rowIndex = sorIndex + 1

Minden xFolder.Files xFájlhoz
Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
rowIndex = sorIndex + 1
Következő xFile
Ha xIsSubfolders Akkor
Minden xSubFolder számára az xFolder.SubFolders mappában
ListFilesInFolder xSubFolder.Path, igaz
Következő xSubFolder
rowIndex = sorIndex + 1
Ha véget

Set xFile = Semmi
Set xFolder = Semmi
Set xFileSystemObject = Semmi

Hívja a Főlistát
End Sub


A weboldal moderátora ezt a megjegyzést minimalizálta
Szép munka, pontosan ezt próbáltam megalkotni. De ez 1000%-al jobb.
Még senki sem írt megjegyzést
Hagyja meg észrevételeit
Feladás vendégként
×
Értékeld ezt a bejegyzést:
0   Karakterek
Javasolt helyek

Kövess minket

Copyright © 2009 - www.extendoffice.com. | Minden jog fenntartva. Powered by ExtendOffice. | Oldaltérkép
A Microsoft és az Office logó a Microsoft Corporation védjegyei vagy bejegyzett védjegyei az Egyesült Államokban és / vagy más országokban.
Sectigo SSL védi