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

Sut i restru'r holl ffeiliau mewn ffolder ac is-ffolderi i mewn i daflen waith?

A ydych erioed wedi ceisio rhestru'r holl enwau ffeiliau o ffolder i mewn i daflen waith gan gynnwys y ffeiliau sydd wedi'u lleoli yn ei is-ffolderi? Mewn gwirionedd, nid oes unrhyw ffordd uniongyrchol inni restru'r enwau ffeiliau o ffolder a'i is-ffolder yn Excel, fodd bynnag, heddiw, byddaf yn cyflwyno rhai triciau cyflym i ddatrys y swydd hon.

Rhestrwch yr holl enwau ffeiliau mewn ffolder ac is-ffolder gyda chod VBA

Rhestrwch yr holl enwau ffeiliau yn y ffolder a'r is-ffolder yn gyflym ac yn hawdd gyda Kutools ar gyfer Excel


Fel rheol, nid oes gan Excel nodwedd ymgorffori i ddelio â'r dasg hon, ond, gallwch gymhwyso'r cod VBA canlynol i gyflawni'r broblem hon.

1. Ysgogi taflen waith newydd a fydd yn rhestru'r enwau ffeiliau.

2. Daliwch i lawr y ALT + F11 allweddi yn Excel, ac mae'n agor y Microsoft Visual Basic ar gyfer Ceisiadau ffenestr.

3. Cliciwch Mewnosod > Modiwlau, a gludwch y cod canlynol yn y Ffenestr Modiwl.

Cod VBA: Rhestrwch yr holl enwau ffeiliau yn y ffolder a'r is-ffolder

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. Ar ôl pasio'r cod i'r Modiwl, pwyswch F5 allwedd i redeg y cod hwn, ac a Macros blwch deialog yn ymddangos, dewiswch y Prif Restr enw macro, ac yna cliciwch Run botwm, gweler y screenshot:

rhestrwch doc ffeiliau yn is-ffolder ffolder 1

5. Ac yn y Pori ffenestr, dewiswch y ffolder rydych chi am restru'r holl enwau ffeiliau gan gynnwys yr is-ffolderi, gweler y screenshot:

rhestrwch doc ffeiliau yn is-ffolder ffolder 2

6. Ar ôl nodi'r ffolder, yna cliciwch OK botwm, ac mae'r holl enwau ffeiliau yn y ffolder a'i is-ffolderi wedi'u rhestru yn y daflen waith gyfredol o gell A2, gweler sgrinluniau:

rhestrwch doc ffeiliau yn is-ffolder ffolder 3
1
rhestrwch doc ffeiliau yn is-ffolder ffolder 4

Gyda'r cod uchod, gallwch chi ddim ond rhestru'r enwau ffeiliau, weithiau, mae angen i chi restru priodoleddau eraill, megis maint ffeil, math o ffeil, amser wedi'i greu, sy'n cynnwys ffolder ac ati. Kutools ar gyfer Excel yn cynnwys swyddogaeth ddefnyddiol - Rhestr Enw Ffeil, gyda'r nodwedd hon, gallwch chi restru'r holl enwau ffeiliau neu fathau penodol yn gyflym mewn ffolder a'i is-ffolderi.

Kutools ar gyfer Excel : gyda mwy na 300 o ychwanegiadau Excel defnyddiol, am ddim i geisio heb unrhyw gyfyngiad mewn 30 diwrnod.

Ar ôl gosod Kutools ar gyfer Excel, gwnewch y camau canlynol:

1. Cliciwch Menter > Mewnforio ac Allforio > Rhestr Enw Ffeil, gweler y screenshot:

2. Yn y Rhestr Enw Ffeil blwch deialog, gwnewch y gweithrediadau canlynol:

A: Cliciwch rhestrwch doc ffeiliau yn is-ffolder ffolder 7botwm i ddewis y ffolder rydych chi am restru'r enwau ffeiliau;

B: Nodwch y math o ffeil rydych chi am ei rhestru o'r Math o ffeiliau adran;

C: Dewiswch un uned maint ffeil rydych chi am ei harddangos o'r Uned maint ffeil adran hon.

Nodyn: I restru'r enwau ffeiliau o'r is-ffolder, gwiriwch Cynhwyswch ffeiliau mewn is-gyfeiriaduron, gallwch hefyd wirio'r Cynhwyswch ffeiliau a ffolderau cudd yn ôl yr angen. Os gwiriwch Creu hypergysylltiadau opsiwn, bydd yn creu hypergysylltiadau ar gyfer pob enw ffeil a ffolder.

Dadlwythwch a threial am ddim Nawr!

3. Yna cliciwch OK botwm, mae'r holl ffeiliau sydd wedi'u cynnwys yn y ffolder a ddewiswyd a'i is-ffolderi wedi'u harddangos gyda'r priodoleddau canlynol mewn taflen waith newydd. Gweler y screenshot:

rhestrwch doc ffeiliau yn is-ffolder ffolder 8

Cliciwch i wybod mwy o fanylion am y cyfleustodau Rhestr Enw Ffeil hwn.

Dadlwythwch a threial am ddim Kutools ar gyfer Excel Now!


Kutools ar gyfer Excel: gyda mwy na 300 o ychwanegiadau Excel defnyddiol, am ddim i geisio heb unrhyw gyfyngiad mewn 30 diwrnod. Dadlwythwch a threial am ddim Nawr!

Yr Offer Cynhyrchedd Swyddfa Gorau

Mae Kutools for Excel yn Datrys y rhan fwyaf o'ch Problemau, ac yn Cynyddu Eich Cynhyrchedd 80%

  • Ailddefnyddio: Mewnosod yn gyflym fformwlâu cymhleth, siartiau ac unrhyw beth rydych chi wedi'i ddefnyddio o'r blaen; Amgryptio Celloedd gyda chyfrinair; Creu Rhestr Bostio ac anfon e-byst ...
  • Bar Fformiwla Gwych (golygu llinellau lluosog o destun a fformiwla yn hawdd); Cynllun Darllen (darllen a golygu nifer fawr o gelloedd yn hawdd); Gludo i'r Ystod Hidlo...
  • Uno Celloedd / Rhesi / Colofnau heb golli Data; Cynnwys Celloedd Hollt; Cyfuno Rhesi / Colofnau Dyblyg... Atal Celloedd Dyblyg; Cymharwch y Meysydd...
  • Dewiswch Dyblyg neu Unigryw Rhesi; Dewiswch Blank Rows (mae pob cell yn wag); Darganfyddiad Gwych a Darganfyddiad Niwlog mewn Llawer o Lyfrau Gwaith; Dewis ar Hap ...
  • Copi Union Celloedd Lluosog heb newid cyfeirnod fformiwla; Auto Creu Cyfeiriadau i Daflenni Lluosog; Mewnosod Bwledi, Blychau Gwirio a mwy ...
  • Testun Detholiad, Ychwanegu Testun, Tynnu yn ôl Swydd, Tynnwch y Gofod; Creu ac Argraffu Subtotals Paging; Trosi rhwng Cynnwys a Sylwadau Celloedd...
  • Hidlo Super (arbed a chymhwyso cynlluniau hidlo i ddalenni eraill); Trefnu Uwch yn ôl mis / wythnos / dydd, amlder a mwy; Hidlo Arbennig gan feiddgar, italig ...
  • Cyfuno Llyfrau Gwaith a Thaflenni Gwaith; Uno Tablau yn seiliedig ar golofnau allweddol; Rhannwch Ddata yn Daflenni Lluosog; Trosi Swp xls, xlsx a PDF...
  • Mwy na 300 o nodweddion pwerus. Yn cefnogi Swyddfa / Excel 2007-2019 a 365. Yn cefnogi pob iaith. Defnydd hawdd yn eich menter neu sefydliad. Nodweddion llawn treial am ddim 30 diwrnod. Gwarant arian yn ôl 60 diwrnod.
tab kte 201905

Mae Tab Office yn Dod â rhyngwyneb Tabbed i'r Swyddfa, a Gwneud Eich Gwaith yn Haws o lawer

  • Galluogi golygu a darllen tabbed yn Word, Excel, PowerPoint, Cyhoeddwr, Mynediad, Visio a Phrosiect.
  • Agor a chreu dogfennau lluosog mewn tabiau newydd o'r un ffenestr, yn hytrach nag mewn ffenestri newydd.
  • Yn cynyddu eich cynhyrchiant 50%, ac yn lleihau cannoedd o gliciau llygoden i chi bob dydd!
gwaelod officetab
sylwadau (20)
Dim sgôr eto. Byddwch y cyntaf i sgorio!
Lleihawyd y sylw hwn gan y safonwr ar y wefan
Erthygl dda Diolch :D
Lleihawyd y sylw hwn gan y safonwr ar y wefan
annwyl, Diolch am y cyfleustodau gwych hwn .....!!! anilkumar
Lleihawyd y sylw hwn gan y safonwr ar y wefan
SUT I WNEUD YR YMHOLIAD HWN WEITHIO ER MWYN RHESTRU'R ENWAU FFEIL O gell B2 yn lle A2 ?
Lleihawyd y sylw hwn gan y safonwr ar y wefan
Helo, Satish,
Gall y cod canlynol eich helpu i roi'r enwau ffeiliau i unrhyw gell a ddewisoch, rhowch gynnig arni:

Is-Brif Restr()
Ar Ail-ddechrau Gwall Nesaf
Gosodwch xRg = Application.InputBox ("Dewiswch gell i roi'r enwau ffeiliau:"", "KuTools For Excel", Selection.Address, , , , , 8)
Os yw xRg Yn Ddim Yna Ymadael Is
Gosod xRg = xRg(1)
Gosod Ffolder = Application.FileDialog(msoFileDialogFolderPicker)
Os Folder.Show <> -1 Yna Ymadael Is
xDir = Ffolder.SelectedItems(1)
Ffoniwch ListFilesInFolder (xRg, xDir, Gwir)
Is-End
Is-RestrFilesInFolder(ByVal xRg Fel Ystod, ByVal xFolderName Fel Llinyn, ByVal xIsIs-ffolderi Fel Boole)
Dim xFileSystemObject Fel Gwrthrych
Dim xFfolder Fel Gwrthrych
Dim xSubFolder Fel Gwrthrych
Dim xFile Fel Gwrthrych
Dim rowIndex Mor Hir
Gosod xFileSystemObject = CreateObject ("Scripting.FileSystemObject")
Gosod xFolder = xFileSystemObject.GetFolder(xFolderName)
rhesIndex = 1
Ar gyfer Pob xFile Yn xFolder.Files
xRg.Formula = xFile.Name
Gosod xRg = xRg.Offset(rowIndex)
rhesIndex = 1
xFfeil nesaf
Os xIsSubfolders Yna
Ar gyfer Pob xSubFolder Mewn xFolder.SubFolders
ListFilesInFolder xRg, xSubFolder.Path, Gwir
xSubFolder nesaf
Gorffennwch Os
Gosod xFile = Dim byd
Gosod xFolder = Dim byd
Gosod xFileSystemObject = Dim byd
Is-End
Lleihawyd y sylw hwn gan y safonwr ar y wefan
gwych!!! wrth fy modd, diolch
Lleihawyd y sylw hwn gan y safonwr ar y wefan
Ddim yn siŵr.. ond a yw'n ystyried ffolderi hir. Ysgrifennais god tebyg ac mae'n methu lle mae'r llwybr ffolder/ffeil yn fwy na 256 nod? Syniadau os gwelwch yn dda?
Lleihawyd y sylw hwn gan y safonwr ar y wefan
Diolch yn fawr iawn am yr erthygl ddefnyddiol!
Sut alla i ddiweddaru'r rhestr yn awtomatig a gweld y newidiadau?
Lleihawyd y sylw hwn gan y safonwr ar y wefan
Fe wnaeth hyn fy helpu i drosi fy nghod i gael yr alwad ailadroddus, ond tybed sut rydych chi'n defnyddio gwrthrychau. Mae'n well gen i ddiffinio fy ngwrthrychau fel yr hyn ydyn nhw, boed yn lyfrau gwaith, yn daflenni gwaith neu'n wrthrychau system ffeiliau. (dim wbDest fel excel.workbook, dim wsDest fel excel.worksheet er enghraifft. Fel hyn does dim rhaid i mi boeni byth beth yw'r daflen weithredol.

Roeddwn i hefyd yn meddwl tybed am y defnydd o .show - if.show <> -1, ac ni allaf helpu i deimlo y byddai'n haws i bobl ddeall pe baech yn defnyddio if.show = ffug.

Ac o ran ysgrifennu at y cyrchfan, roeddwn i'n teimlo bod defnyddio celloedd a fformiwla i'w gweld yn bell iawn

Felly yn fy nghod mae gen i, er enghraifft,
wsDest.Range("B" & CurRow) = ffeil.name
(CurRow = Rhes Gyfredol)

Dydw i ddim yn beirniadu, dim ond meddwl tybed a ydych chi'n ei wneud fel hyn am unrhyw reswm heblaw dewis personol. - Bob amser yn barod i ddysgu


Ond ar wahân i hynny diolch am yr help
Lleihawyd y sylw hwn gan y safonwr ar y wefan
Diolch am y cod hwn mae wedi fy helpu gyda chais am waith, rydw i nawr yn gallu mewnforio'r canlyniadau hyn i Access ar gyfer trawsnewid pellach.Gwerthfawrogi hynny.
Lleihawyd y sylw hwn gan y safonwr ar y wefan
Ni ddefnyddir is-"GetFileOwner()" yn y cod uchod.
Lleihawyd y sylw hwn gan y safonwr ar y wefan
Helo, jumpjack,
Mae'r cod uchod yn gweithio'n dda yn fy Excel, pa fersiwn Excel ydych chi'n ei ddefnyddio?
Lleihawyd y sylw hwn gan y safonwr ar y wefan
Extremamente elegante este codigo!
Lleihawyd y sylw hwn gan y safonwr ar y wefan
Beth oedd pwrpas y paramedr ByVal xIsSubfolders As Boolean?
Lleihawyd y sylw hwn gan y safonwr ar y wefan
Mae fy VBA yn dweud nad yw'r ffolder newidyn wedi'i ddiffinio. Unrhyw un yn gwybod pam mae hyn?
Lleihawyd y sylw hwn gan y safonwr ar y wefan
Newydd iawn i VBA. sut ydw i'n defnyddio'r cod uchod ond mae llwybr y ffeil wedi'i gynnwys ynddo fel nad oes rhaid i mi chwilio amdano bob tro?
Lleihawyd y sylw hwn gan y safonwr ar y wefan
Hei, felly os oes rhaid i mi dynnu estyniad o'r rhestr gyfan, ble ddylwn i wneud newidiadau?
Lleihawyd y sylw hwn gan y safonwr ar y wefan
A yw'n gweithio ar MAC hefyd?
Lleihawyd y sylw hwn gan y safonwr ar y wefan
Rwyf wedi addasu eich cod i'w wneud yn ailgylchu ac yn ail-redeg y deialog ffolder yn barhaus nes i chi bwyso Cancel.Unfornatually mae'n cynhyrchu rhai errors.1. Os bydd is-ffolderi yn cymryd rhan mewn ffolder a ddewiswyd yna bydd y ffolder nesaf a ddewisir yn mynd allan o drefn rifiadol.2. Os bydd is-ffolderi'n dod yn rhan o ffolder a ddewisir, rhaid ailadrodd y botwm Canslo a'i ailadrodd yn dibynnu ar faint o ffolderi rydych chi wedi'u hychwanegu.
Côd:
Is-Brif Restr()
'Updateby Extendoffice
Gosod ffolder = Application.FileDialog(msoFileDialogFolderPicker)
Os folder.Show <> -1 Yna Ymadael Is
xDir = ffolder.SelectedItems(1)
Call ListFilesInFolder (xDir, Gwir)
Diwedd Is-RestrFilesInFolder(ByVal xFolderName Fel Llinyn, ByVal xIsSubfolders Fel Boole)
Dim xFileSystemObject Fel Gwrthrych
Dim xFfolder Fel Gwrthrych
Dim xSubFolder Fel Gwrthrych
Dim xFile Fel Gwrthrych
Dim rowIndex Mor Hir
Gosod xFileSystemObject = CreateObject ("Scripting.FileSystemObject")
Gosod xFolder = xFileSystemObject.GetFolder(xFolderName)
rowIndex = Cais.ActiveSheet.Range("A65536").Diwedd(xlUp). Rhes + 1
Ar gyfer Pob xFile Yn xFolder.Files
Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
rowIndex = rowIndex + 1
xFfeil nesaf
Os xIsSubfolders Yna
Ar gyfer Pob xSubFolder Mewn xFolder.SubFolders
ListFilesInFolder xSubFolder.Path, Gwir
xSubFolder nesaf
Gorffennwch Os
Gosod xFile = Dim byd
Gosod xFolder = Dim byd
Gosod xFileSystemObject = Dim byd
Is-End

unrhyw syniadau?
Lleihawyd y sylw hwn gan y safonwr ar y wefan
Mae'n ddrwg gennyf... rhoddais y cod anghywir i chi (isod), dyma'r cod a addasais...
Côd:
Is-Brif Restr()
Ar Ail-ddechrau Gwall Nesaf
Dim xFileSystemObject Fel Gwrthrych
Dim xFfolder Fel Gwrthrych
Dim xSubFolder Fel Gwrthrych
Dim xFile Fel Gwrthrych
Dim rowIndex Mor Hir
Dim ateb Fel Amrywiad
ateb = Gau
Gyda Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Dewis Ffolder"
.AllowMultiSelect = Gau
Gosod ffolder = Application.FileDialog(msoFileDialogFolderPicker)
Os folder.Show = -1 Yna
xDir = ffolder.SelectedItems(1)
arall
Is Allanfa
Gorffennwch Os
Diwedd Gyda

Call ListFilesInFolder (xDir, Gwir)
Is-End

Is-RestrFilesInFolder(ByVal xFolderName Fel Llinyn, ByVal xIsSubfolders Fel Boole)
Gosod xFileSystemObject = CreateObject ("Scripting.FileSystemObject")
Gosod xFolder = xFileSystemObject.GetFolder(xFolderName)
rowIndex = Cais.ActiveSheet.Range("A65536").Diwedd(xlUp). Rhes + 1

' Ychwanegu bwlch ac yna Enw'r Ffolder i'r Daflen Waith
rowIndex = rowIndex + 1
Gyda Application.ActiveSheet.Cells(rowIndex, 1)
.Value = xFolder.Name
.Font.Size = 12
.Font.FontStyle = "Italig trwm"
Diwedd Gyda
rowIndex = rowIndex + 1

Ar gyfer Pob xFile Yn xFolder.Files
Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
rowIndex = rowIndex + 1
xFfeil nesaf
Os xIsSubfolders Yna
Ar gyfer Pob xSubFolder Mewn xFolder.SubFolders
ListFilesInFolder xSubFolder.Path, Gwir
xSubFolder nesaf
rowIndex = rowIndex + 1
Gorffennwch Os

Gosod xFile = Dim byd
Gosod xFolder = Dim byd
Gosod xFileSystemObject = Dim byd

Ffoniwch MainList
Is-End


Lleihawyd y sylw hwn gan y safonwr ar y wefan
Gwaith neis, yn union yr hyn yr oeddwn yn ceisio ei greu. Ond mae hyn 1000% yn well.
Nid oes unrhyw sylwadau wedi'u postio yma eto
Gadewch eich sylwadau
Postio fel Gwestai
×
Graddiwch y swydd hon:
0   Cymeriadau
Lleoliadau a Awgrymir