Μετάβαση στο κύριο περιεχόμενο

Πώς να καταχωρίσετε όλα τα αρχεία σε φάκελο και υποφακέλους σε ένα φύλλο εργασίας;

Έχετε προσπαθήσει ποτέ να παραθέσετε όλα τα ονόματα αρχείων από ένα φάκελο σε ένα φύλλο εργασίας, συμπεριλαμβανομένων των αρχείων που βρίσκονται στους υποφακέλους του; Στην πραγματικότητα, δεν υπάρχει άμεσος τρόπος για να παραθέσουμε τα ονόματα αρχείων από έναν φάκελο και τον υποφάκελό του στο Excel, ωστόσο, σήμερα, θα παρουσιάσω μερικά γρήγορα κόλπα για την επίλυση αυτής της εργασίας.

Καταγράψτε όλα τα ονόματα αρχείων σε φάκελο και υποφάκελο με κωδικό VBA

Καταγράψτε όλα τα ονόματα αρχείων σε φάκελο και υποφάκελο γρήγορα και εύκολα με το Kutools για Excel


Κανονικά, το Excel δεν διαθέτει δυνατότητα ενσωμάτωσης για την αντιμετώπιση αυτής της εργασίας, αλλά, μπορείτε να εφαρμόσετε τον ακόλουθο κώδικα VBA για να ολοκληρώσετε αυτό το πρόβλημα.

1. Ενεργοποιήστε ένα νέο φύλλο εργασίας που θα εμφανίζει τα ονόματα αρχείων.

2. Κρατήστε πατημένο το ALT + F11 στο Excel και ανοίγει το Microsoft Visual Basic για εφαρμογές παράθυρο.

3. Κλίκ Κύριο θέμα > Μονάδα μέτρησηςκαι επικολλήστε τον ακόλουθο κώδικα στο Παράθυρο ενότητας.

Κωδικός VBA: Λίστα όλων των ονομάτων αρχείων σε φάκελο και υποφάκελο

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. Αφού επικολλήσετε τον κώδικα στην Ενότητα, πατήστε F5 κλειδί για την εκτέλεση αυτού του κώδικα, και a Μακροεντολές εμφανίζεται το παράθυρο διαλόγου, επιλέξτε το Κύρια λίστα όνομα μακροεντολής και, στη συνέχεια, κάντε κλικ στο τρέξιμο κουμπί, δείτε το στιγμιότυπο οθόνης:

αρχεία λίστας εγγράφων στον υποφάκελο 1

5. Και στο Αναζήτηση παράθυρο, επιλέξτε το φάκελο στον οποίο θέλετε να αναφέρετε όλα τα ονόματα αρχείων συμπεριλαμβανομένων των υποφακέλων, δείτε το στιγμιότυπο οθόνης:

αρχεία λίστας εγγράφων στον υποφάκελο 2

6. Αφού καθορίσετε το φάκελο, κάντε κλικ στο OK κουμπί και όλα τα ονόματα αρχείων στο φάκελο και τους υποφακέλους του έχουν καταχωριστεί στο τρέχον φύλλο εργασίας από το κελί A2, δείτε στιγμιότυπα οθόνης:

αρχεία λίστας εγγράφων στον υποφάκελο 3
1
αρχεία λίστας εγγράφων στον υποφάκελο 4

Με τον παραπάνω κωδικό, μπορείτε απλώς να παραθέσετε τα ονόματα αρχείων, μερικές φορές, πρέπει να παραθέσετε άλλα χαρακτηριστικά, όπως μέγεθος αρχείου, τύπο αρχείου, ώρα δημιουργίας, που περιέχει φάκελο και άλλα. Kutools για Excel περιέχει μια χρήσιμη λειτουργία - Λίστα ονομάτων αρχείων, με αυτήν τη δυνατότητα, μπορείτε να εμφανίσετε γρήγορα όλους ή συγκεκριμένους τύπους ονομάτων αρχείων σε ένα φάκελο και τους υποφακέλους του.

Kutools για Excel : με περισσότερα από 300 εύχρηστα πρόσθετα Excel, δωρεάν δοκιμή χωρίς περιορισμό σε 30 ημέρες.

Μετά την εγκατάσταση Kutools για Excel, κάντε τα παρακάτω βήματα:

1. Κλίκ Εταιρεία > Εισαγωγή εξαγωγή > Λίστα ονομάτων αρχείων, δείτε το στιγμιότυπο οθόνης:

2. Στην Λίστα ονομάτων αρχείων πλαίσιο διαλόγου, κάντε τις ακόλουθες λειτουργίες:

A: Κάντε κλικ αρχεία λίστας εγγράφων στον υποφάκελο 7κουμπί για να επιλέξετε το φάκελο που θέλετε να αναφέρετε τα ονόματα αρχείων.

B: Καθορίστε τον τύπο αρχείου που θέλετε να παραθέσετε από το Τύπος αρχείων Ενότητα;

C: Επιλέξτε μία μονάδα μεγέθους αρχείου που θέλετε να εμφανιστεί από το Μονάδα μεγέθους αρχείου τμήμα.

Note: Για να εμφανίσετε τα ονόματα αρχείων από τον υποφάκελο, ελέγξτε Συμπεριλάβετε αρχεία σε υποκαταλόγους, μπορείτε επίσης να ελέγξετε το Συμπεριλάβετε κρυφά αρχεία και φακέλους όπως χρειάζεστε. Εάν ελέγξετε Δημιουργία υπερσυνδέσμων επιλογή, θα δημιουργήσει υπερσυνδέσμους για κάθε όνομα αρχείου και φάκελο.

Λήψη και δωρεάν δοκιμή τώρα!

3. Στη συνέχεια κάντε κλικ στο κουμπί OK κουμπί, όλα τα αρχεία που περιλαμβάνονται στον επιλεγμένο φάκελο και τους υποφακέλους του έχουν εμφανιστεί με τα ακόλουθα χαρακτηριστικά σε ένα νέο φύλλο εργασίας. Δείτε το στιγμιότυπο οθόνης:

αρχεία λίστας εγγράφων στον υποφάκελο 8

Κάντε κλικ για να μάθετε περισσότερες λεπτομέρειες σχετικά με αυτό το βοηθητικό πρόγραμμα Λίστα αρχείων.

Κατεβάστε και δωρεάν δοκιμή Kutools για Excel τώρα!


Kutools για Excel: με περισσότερα από 300 εύχρηστα πρόσθετα του Excel, δωρεάν δοκιμή χωρίς περιορισμό σε 30 ημέρες. Λήψη και δωρεάν δοκιμή τώρα!

Τα καλύτερα εργαλεία παραγωγικότητας γραφείου

🤖 Kutools AI Aide: Επανάσταση στην ανάλυση δεδομένων με βάση: Ευφυής Εκτέλεση   |  Δημιουργία κώδικα  |  Δημιουργία προσαρμοσμένων τύπων  |  Αναλύστε δεδομένα και δημιουργήστε γραφήματα  |  Επίκληση Λειτουργιών Kutools...
Δημοφιλή χαρακτηριστικά: Εύρεση, επισήμανση ή αναγνώριση διπλότυπων   |  Διαγραφή κενών γραμμών   |  Συνδυάστε στήλες ή κελιά χωρίς απώλεια δεδομένων   |   Γύρος χωρίς φόρμουλα ...
Σούπερ Αναζήτηση: VLookup πολλαπλών κριτηρίων    VLookup πολλαπλών τιμών  |   VLookup σε πολλά φύλλα   |   Ασαφής αναζήτηση ....
Σύνθετη αναπτυσσόμενη λίστα: Γρήγορη δημιουργία αναπτυσσόμενης λίστας   |  Εξαρτημένη αναπτυσσόμενη λίστα   |  Πολλαπλή αναπτυσσόμενη λίστα ....
Διαχειριστής στήλης: Προσθέστε έναν συγκεκριμένο αριθμό στηλών  |  Μετακίνηση στηλών  |  Εναλλαγή κατάστασης ορατότητας κρυφών στηλών  |  Συγκρίνετε εύρη και στήλες ...
Επιλεγμένα Χαρακτηριστικά: Εστίαση πλέγματος   |  Προβολή σχεδίου   |   Μεγάλη Formula Bar    Διαχείριση βιβλίου εργασίας & φύλλου   |  Βιβλιοθήκη πόρων (Αυτόματο κείμενο)   |  Επιλογή ημερομηνίας   |  Συνδυάστε φύλλα εργασίας   |  Κρυπτογράφηση/Αποκρυπτογράφηση κελιών    Αποστολή email ανά λίστα   |  Σούπερ φίλτρο   |   Ειδικό φίλτρο (φίλτρο με έντονη γραφή/πλάγια γραφή/διαγραφή...) ...
Κορυφαία 15 σύνολα εργαλείων12 Κείμενο Εργαλεία (Προσθήκη κειμένου, Κατάργηση χαρακτήρων, ...)   |   50 + Διάγραμμα Τύποι (Gantt διάγραμμα, ...)   |   40+ Πρακτικό ΜΑΘΗΜΑΤΙΚΟΙ τυποι (Υπολογίστε την ηλικία με βάση τα γενέθλια, ...)   |   19 Εισαγωγή Εργαλεία (Εισαγωγή κωδικού QR, Εισαγωγή εικόνας από το μονοπάτι, ...)   |   12 Μετατροπή Εργαλεία (Αριθμοί σε λέξεις, Μετατροπή Συναλλάγματος, ...)   |   7 Συγχώνευση & διαχωρισμός Εργαλεία (Σύνθετες σειρές συνδυασμού, Διαίρεση κελιών, ...)   |   ... κι αλλα

Αυξήστε τις δεξιότητές σας στο Excel με τα Kutools για Excel και απολαύστε την αποτελεσματικότητα όπως ποτέ πριν. Το Kutools για Excel προσφέρει πάνω από 300 προηγμένες δυνατότητες για την ενίσχυση της παραγωγικότητας και την εξοικονόμηση χρόνου.  Κάντε κλικ εδώ για να αποκτήσετε τη δυνατότητα που χρειάζεστε περισσότερο...

Περιγραφή


Το Office Tab φέρνει τη διεπαφή με καρτέλες στο Office και κάνει την εργασία σας πολύ πιο εύκολη

  • Ενεργοποίηση επεξεργασίας και ανάγνωσης καρτελών σε Word, Excel, PowerPoint, Publisher, Access, Visio και Project.
  • Ανοίξτε και δημιουργήστε πολλά έγγραφα σε νέες καρτέλες του ίδιου παραθύρου και όχι σε νέα παράθυρα.
  • Αυξάνει την παραγωγικότητά σας κατά 50% και μειώνει εκατοντάδες κλικ του ποντικιού για εσάς κάθε μέρα!
Comments (20)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Nice work, exactly what I was trying to create. But this is 1000% better.
This comment was minimized by the moderator on the site
Sorry... I gave you the wrong code (below), here is the code I modified..
Code:
Sub MainList()
On Error Resume Next
Dim xFileSystemObject As Object
Dim xFolder As Object
Dim xSubFolder As Object
Dim xFile As Object
Dim rowIndex As Long
Dim answer As Variant
answer = False
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Select a Folder"
.AllowMultiSelect = False
Set folder = Application.FileDialog(msoFileDialogFolderPicker)
If folder.Show = -1 Then
xDir = folder.SelectedItems(1)
Else
Exit Sub
End If
End With

Call ListFilesInFolder(xDir, True)
End Sub

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

' Add a space then the Folder Name to the Worksheet
rowIndex = rowIndex + 1
With Application.ActiveSheet.Cells(rowIndex, 1)
.Value = xFolder.Name
.Font.Size = 12
.Font.FontStyle = "Bold Italic"
End With
rowIndex = rowIndex + 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
rowIndex = rowIndex + 1
End If

Set xFile = Nothing
Set xFolder = Nothing
Set xFileSystemObject = Nothing

Call MainList
End Sub


This comment was minimized by the moderator on the site
I have modified your code to make it recycle and re-run the folder dialog continuously until you press Cancel.Unfornatually it generates some errors.1. If subfolders become involved in a folder selected then the next folder selected becomes out of numerical order.2. If subfolders become involved in a folder selected the Cancel button has to be repeated and repeated depending on how many folders you have added.
Code:
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 SubSub 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

any ideas ?
This comment was minimized by the moderator on the site
Does it work on MAC too?
This comment was minimized by the moderator on the site
Hey, so if I have to just extract an extension from the whole list, where should I make changes?
This comment was minimized by the moderator on the site
Really new to VBA. how do i use the above code but have the file path built into it so i don't have to search for it every time?
This comment was minimized by the moderator on the site
My VBA is saying that the variable folder is not defined. Anyone know why this is?
This comment was minimized by the moderator on the site
What was the purpose of the parameter ByVal xIsSubfolders As Boolean?
This comment was minimized by the moderator on the site
Extremamente elegante este código!
This comment was minimized by the moderator on the site
Sub "GetFileOwner()" in code above is not used.
This comment was minimized by the moderator on the site
Hello, jumpjack,
The above code works well in my Excel, which Excel version do you use?
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations