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

Kako vse datoteke v mapi in podmapah našteti na delovnem listu?

Ste že kdaj poskušali vsa imena datotek iz mape uvrstiti na delovni list, vključno z datotekami v njegovih podmapah? Dejansko ne moremo neposredno našteti imen datotek iz mape in njene podmape v Excelu, danes pa bom predstavil nekaj hitrih trikov za rešitev tega posla.

Seznam vseh imen datotek v mapi in podmapi s kodo VBA

S Kutools za Excel hitro in enostavno navedite vsa imena datotek v mapi in podmapi


Običajno Excel nima vgrajene funkcije za reševanje te naloge, vendar lahko za dokončanje te težave uporabite naslednjo kodo VBA.

1. Aktivirajte nov delovni list, v katerem bodo navedena imena datotek.

2. Držite tipko ALT + F11 tipke v Excelu in odpre Microsoft Visual Basic za aplikacije okno.

3. Kliknite Vstavi > Moduliin prilepite naslednjo kodo v Okno modula.

Koda VBA: navedite vsa imena datotek v mapi in podmapi

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. Po lepljenju kode v modul pritisnite F5 tipko za zagon te kode in a Makri odpre se pogovorno okno, izberite Glavni seznam ime makra in nato kliknite Run gumb, glej posnetek zaslona:

datoteke seznama dokumentov v podmapi mape 1

5. In v Brskanje okno, izberite mapo, v katero želite našteti vsa imena datotek, vključno s podmapami, glejte sliko zaslona:

datoteke seznama dokumentov v podmapi mape 2

6. Po določitvi mape kliknite OK in vsa imena datotek v mapi in njenih podmapah so navedena v trenutnem delovnem listu iz celice A2, glejte posnetke zaslona:

datoteke seznama dokumentov v podmapi mape 3
1
datoteke seznama dokumentov v podmapi mape 4

Z zgornjo kodo lahko samo navedete imena datotek, včasih pa morate navesti tudi druge atribute, kot so velikost datoteke, vrsta datoteke, ustvarjeni čas, mapa in tako naprej. Kutools za Excel vsebuje uporabno funkcijo - Seznam imen datotek, s to funkcijo lahko hitro navedete vse ali določene vrste imen datotek v mapi in njenih podmapah.

Kutools za Excel : z več kot 300 priročnimi dodatki za Excel, ki jih lahko brezplačno preizkusite v 30 dneh.

Po namestitvi Kutools za Excel, naredite naslednje:

1. Kliknite Podjetje > Uvozno-izvoznih > Seznam imen datotek, glej posnetek zaslona:

2. v Seznam imen datotek v pogovornem oknu izvedite naslednje postopke:

A: Kliknite datoteke seznama dokumentov v podmapi mape 7gumb, da izberete mapo, v katero želite navesti imena datotek;

B: Določite vrsto datoteke, ki jo želite na seznamu Vrsta datotek odsek;

C: Med enotami izberite enoto velikosti datoteke, ki jo želite prikazati Enota velikosti datoteke oddelek.

Opombe: Če želite seznam imen datotek izvesti v podmapi, preverite Vključi datoteke v podimenike, lahko tudi preverite Vključi skrite datoteke in mape kot rabiš. Če preverite Ustvari hiperpovezave možnost bo ustvarila hiperpovezave za vsa imena datotek in map.

Prenesite in brezplačno preskusite zdaj!

3. Nato kliknite OK , so vse datoteke v izbrani mapi in njenih podmapah prikazane z naslednjimi atributi na novem delovnem listu. Oglejte si posnetek zaslona:

datoteke seznama dokumentov v podmapi mape 8

Kliknite, če želite izvedeti več podrobnosti o tem pripomočku Seznam imen datotek.

Prenesite in brezplačno preizkusite Kutools za Excel zdaj!


Kutools za Excel: z več kot 300 priročnimi dodatki za Excel, brezplačno preizkusite brez omejitev v 30 dneh. Prenesite in brezplačno preskusite zdaj!

Najboljša orodja za pisarniško produktivnost

Kutools za Excel rešuje večino vaših težav in poveča vašo produktivnost za 80%

  • Ponovna uporaba: Hitro vstavite zapletene formule, grafikoni in vse, kar ste že uporabljali; Šifriraj celice z geslom; Ustvari poštni seznam in pošiljanje e-pošte ...
  • Vrstica Super Formula (enostavno urejanje več vrstic besedila in formule); Bralna postavitev (enostavno branje in urejanje velikega števila celic); Prilepite v filtrirani obseg...
  • Združi celice / vrstice / stolpce brez izgube podatkov; Vsebina razdeljenih celic; Združi podvojene vrstice / stolpce... prepreči podvojene celice; Primerjaj obsege...
  • Izberite Duplicate ali Unique Vrstice; Izberite prazne vrstice (vse celice so prazne); Super Find in Fuzzy Find v mnogih delovnih zvezkih; Naključna izbira ...
  • Natančna kopija Več celic brez spreminjanja sklica formule; Samodejno ustvarjanje referenc na več listov; Vstavi oznake, Potrditvena polja in še več ...
  • Izvleček besedila, Dodaj besedilo, Odstrani po položaju, Odstrani presledek; Ustvari in natisni vmesne seštevke strani Pretvarjanje med vsebino celic in komentarji...
  • Super filter (shranite in uporabite sheme filtrov za druge liste); Napredno razvrščanje glede na mesec / teden / dan, pogostost in drugo; Poseben filter s krepko, ležeče ...
  • Združite delovne zvezke in delovne liste; Spoji tabele na podlagi ključnih stolpcev; Razdelite podatke na več listov; Paketna pretvorba xls, xlsx in PDF...
  • Več kot 300 zmogljivih funkcij. Podpira Office / Excel 2007-2021 in 365. Podpira vse jezike. Enostavna uvedba v vašem podjetju ali organizaciji. 30-dnevna brezplačna preizkusna različica vseh funkcij. 60-dnevna garancija vračila denarja.
zavihek kte 201905

Kartica Office prinaša vmesnik z zavihki v Office in poenostavi vaše delo

  • Omogočite urejanje in branje z zavihki v Wordu, Excelu, PowerPointu, Publisher, Access, Visio in Project.
  • Odprite in ustvarite več dokumentov v novih zavihkih istega okna in ne v novih oknih.
  • Poveča vašo produktivnost za 50%in vsak dan zmanjša na stotine klikov miške za vas!
dno pisarniške mize
Komentarji (20)
Ocene še ni. Bodite prvi in ​​ocenite!
Ta komentar je moderator na spletnem mestu minimiziral
Dober članek hvala :D
Ta komentar je moderator na spletnem mestu minimiziral
dragi, hvala za ta čudovit pripomoček.....!!! anilkumar
Ta komentar je moderator na spletnem mestu minimiziral
KAKO NAPRAVITI, DA TA POIZVEDBA DELO, DA SE IMENA DATOTEK NAVODI IZ celice B2 namesto A2?
Ta komentar je moderator na spletnem mestu minimiziral
Živjo, Satish,
Naslednja koda vam lahko pomaga postaviti imena datotek v katero koli izbrano celico, poskusite:

Podglavni seznam()
On Error Resume Next
Nastavite xRg = Application.InputBox("Prosim, izberite celico za vnos imen datotek:", "KuTools For Excel", Selection.Address, , , , , 8)
Če xRg ni nič, zapustite Sub
Nastavi xRg = xRg(1)
Nastavi mapo = Application.FileDialog(msoFileDialogFolderPicker)
Če Folder.Show <> -1 Nato Izhod iz Sub
xDir = Folder.SelectedItems(1)
Seznam klicevFilesInFolder(xRg, xDir, True)
End Sub
Sub ListFilesInFolder(ByVal xRg kot obseg, ByVal xFolderName kot niz, ByVal xIsSubfolders kot Boolean)
Zatemni xFileSystemObject kot objekt
Zatemni xFolder kot objekt
Zatemni xSubFolder kot objekt
Zatemni xFile kot objekt
Dim rowIndex As Long
Nastavite xFileSystemObject = CreateObject("Scripting.FileSystemObject")
Nastavite xFolder = xFileSystemObject.GetFolder(xFolderName)
Indeks vrstice = 1
Za vsako xFile v xFolder.Files
xRg.Formula = xFile.Name
Nastavi xRg = xRg.Offset(indeks vrstice)
Indeks vrstice = 1
Naslednji xFile
Če xIsSubfolders Potem
Za vsako mapo xSubFolder v xFolder.SubFolders
ListFilesInFolder xRg, xSubFolder.Path, True
Naslednja mapa xSub
Konec Če
Nastavite xFile = Nič
Nastavite xFolder = Nič
Nastavite xFileSystemObject = Nič
End Sub
Ta komentar je moderator na spletnem mestu minimiziral
Super!!! všeč mi je, hvala
Ta komentar je moderator na spletnem mestu minimiziral
Nisem prepričan.. ampak ali upošteva dolge mape. napisal sem podobno kodo in ne uspe tam, kjer pot mape/datoteke presega 256 znakov? Misli prosim?
Ta komentar je moderator na spletnem mestu minimiziral
Najlepša hvala za koristen članek!
Kako lahko samodejno posodobim seznam in opazim spremembe?
Ta komentar je moderator na spletnem mestu minimiziral
To mi je pomagalo pretvoriti svojo kodo v rekurzivni klic, vendar me zanima, kako uporabljate predmete. Svoje predmete raje definiram kot to, kar so, pa naj bodo to delovni zvezki, delovni listi ali objekti datotečnega sistema. (na primer dim wbDest kot excel.workbook, dim wsDest kot excel.worksheet. Tako mi nikoli ni treba skrbeti, kaj je aktivni list.

Spraševal sem se tudi o uporabi .show - if.show <>-1 in ne morem se izogniti občutku, da bi bilo ljudem lažje razumeti, če bi namesto tega uporabili if.show = false.

In glede pisanja do cilja, se mi je zdelo, da je uporaba celic in formule dolga pot

Tako imam v svoji kodi npr.
wsDest.Range("B" & CurRow) = ime datoteke
(CurRow = trenutna vrstica)

Ne kritiziram, sprašujem se, če to počnete tako iz kakršnega koli drugega razloga kot iz osebnih želja. - Vedno se pripravljen učiti


Ampak poleg tega hvala za pomoč
Ta komentar je moderator na spletnem mestu minimiziral
Hvala za to kodo, ki mi je pomagala pri zahtevi za delo, zdaj lahko uvozim te rezultate v Access za nadaljnjo preoblikovanje. Hvala.
Ta komentar je moderator na spletnem mestu minimiziral
Pod "GetFileOwner()" v zgornji kodi se ne uporablja.
Ta komentar je moderator na spletnem mestu minimiziral
Pozdravljeni, skakalec,
Zgornja koda dobro deluje v mojem Excelu, katero različico Excela uporabljate?
Ta komentar je moderator na spletnem mestu minimiziral
Extremamente elegante este código!
Ta komentar je moderator na spletnem mestu minimiziral
Kaj je bil namen parametra ByVal xIsSubfolders As Boolean?
Ta komentar je moderator na spletnem mestu minimiziral
Moj VBA pravi, da spremenljivka mapa ni definirana. Ali kdo ve zakaj je to?
Ta komentar je moderator na spletnem mestu minimiziral
Res nov v VBA. kako naj uporabim zgornjo kodo, vendar imam vgrajeno pot datoteke, da mi je ni treba vsakič iskati?
Ta komentar je moderator na spletnem mestu minimiziral
Hej, če moram samo izvleči razširitev s celotnega seznama, kje naj spremenim?
Ta komentar je moderator na spletnem mestu minimiziral
Ali deluje tudi na MAC?
Ta komentar je moderator na spletnem mestu minimiziral
Spremenil sem vašo kodo, tako da se lahko reciklira in neprekinjeno znova zažene pogovorno okno mape, dokler ne pritisnete Prekliči. Nenamerno ustvari nekaj napak.1. Če podmape postanejo vključene v izbrano mapo, potem naslednja izbrana mapa ni v številčnem vrstnem redu.2. Če se podmape vključijo v izbrano mapo, je treba gumb Prekliči ponoviti in ponoviti, odvisno od tega, koliko map ste dodali.
Koda:
Podglavni seznam()
'Posodobitev Extendoffice
Nastavi mapo = Application.FileDialog(msoFileDialogFolderPicker)
Če mapa.Pokaži <> -1 Nato Izhod Sub
xDir = mapa.SelectedItems(1)
Seznam klicevFilesInFolder(xDir, True)
End SubSub ListFilesInFolder(ByVal xFolderName kot niz, ByVal xIsSubfolders kot Boolean)
Zatemni xFileSystemObject kot objekt
Zatemni xFolder kot objekt
Zatemni xSubFolder kot objekt
Zatemni xFile kot objekt
Dim rowIndex As Long
Nastavite xFileSystemObject = CreateObject("Scripting.FileSystemObject")
Nastavite xFolder = xFileSystemObject.GetFolder(xFolderName)
rowIndex = Application.ActiveSheet.Range("A65536").End(xlUp).Row + 1
Za vsako xFile v xFolder.Files
Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
rowIndex = rowIndex + 1
Naslednji xFile
Če xIsSubfolders Potem
Za vsako mapo xSubFolder v xFolder.SubFolders
ListFilesInFolder xSubFolder.Path, True
Naslednja mapa xSub
Konec Če
Nastavite xFile = Nič
Nastavite xFolder = Nič
Nastavite xFileSystemObject = Nič
End Sub

kaj idej ?
Ta komentar je moderator na spletnem mestu minimiziral
Oprostite ... dal sem vam napačno kodo (spodaj), tukaj je koda, ki sem jo spremenil.
Koda:
Podglavni seznam()
On Error Resume Next
Zatemni xFileSystemObject kot objekt
Zatemni xFolder kot objekt
Zatemni xSubFolder kot objekt
Zatemni xFile kot objekt
Dim rowIndex As Long
Nejasen odgovor Kot varianta
odgovor = napačno
Z Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Izberite mapo"
.AllowMultiSelect = False
Nastavi mapo = Application.FileDialog(msoFileDialogFolderPicker)
Če mapa.Show = -1 Potem
xDir = mapa.SelectedItems(1)
Else
Exit Sub
Konec Če
Končaj s

Seznam klicevFilesInFolder(xDir, True)
End Sub

Sub ListFilesInFolder(ByVal xFolderName kot niz, ByVal xIsSubfolders kot Boolean)
Nastavite xFileSystemObject = CreateObject("Scripting.FileSystemObject")
Nastavite xFolder = xFileSystemObject.GetFolder(xFolderName)
rowIndex = Application.ActiveSheet.Range("A65536").End(xlUp).Row + 1

' Delovnemu listu dodajte presledek in nato ime mape
rowIndex = rowIndex + 1
Z Application.ActiveSheet.Cells(rowIndex, 1)
.Value = xFolder.Name
.Velikost pisave = 12
.Font.FontStyle = "krepko ležeče"
Končaj s
rowIndex = rowIndex + 1

Za vsako xFile v xFolder.Files
Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
rowIndex = rowIndex + 1
Naslednji xFile
Če xIsSubfolders Potem
Za vsako mapo xSubFolder v xFolder.SubFolders
ListFilesInFolder xSubFolder.Path, True
Naslednja mapa xSub
rowIndex = rowIndex + 1
Konec Če

Nastavite xFile = Nič
Nastavite xFolder = Nič
Nastavite xFileSystemObject = Nič

Pokličite glavni seznam
End Sub


Ta komentar je moderator na spletnem mestu minimiziral
Dobro delo, točno to, kar sem poskušal ustvariti. Ampak to je 1000% boljše.
Tu še ni objavljenih komentarjev
Pustite vaše komentarje
Objava kot gost
×
Ocenite to objavo:
0   Znaki
Predlagane lokacije

Sledi nam

Copyright © 2009 - www.extendoffice.com. | Vse pravice pridržane. Poganja ga ExtendOffice. | Kazalo
Microsoft in logotip Office sta blagovni znamki ali registrirani blagovni znamki družbe Microsoft Corporation v ZDA in / ali drugih državah.
Zaščiteno s Sectigo SSL