मुख्य सामग्री पर जाएं

फ़ोल्डर और सबफ़ोल्डर की सभी फ़ाइलों को वर्कशीट में कैसे सूचीबद्ध करें?

लेखक: ज़ियाओयांग अंतिम संशोधित: 2020-04-28

क्या आपने कभी किसी फ़ोल्डर के सभी फ़ाइल नामों को उसके सबफ़ोल्डर्स में स्थित फ़ाइलों सहित वर्कशीट में सूचीबद्ध करने का प्रयास किया है? वास्तव में, एक्सेल में किसी फ़ोल्डर और उसके सबफ़ोल्डर से फ़ाइल नामों को सूचीबद्ध करने का हमारे पास कोई सीधा तरीका नहीं है, हालांकि, आज, मैं इस काम को हल करने के लिए कुछ त्वरित तरकीबें पेश करूंगा।

VBA कोड के साथ फ़ोल्डर और सबफ़ोल्डर में सभी फ़ाइल नामों की सूची बनाएं

एक्सेल के लिए कुटूल के साथ फ़ोल्डर और सबफ़ोल्डर में सभी फ़ाइल नामों को जल्दी और आसानी से सूचीबद्ध करें


आम तौर पर, एक्सेल में इस कार्य से निपटने के लिए कोई अंतर्निहित सुविधा नहीं है, लेकिन, आप इस समस्या को पूरा करने के लिए निम्नलिखित वीबीए कोड लागू कर सकते हैं।

1. एक नई वर्कशीट सक्रिय करें जिसमें फ़ाइल नाम सूचीबद्ध होंगे।

2. दबाए रखें ALT + F11 एक्सेल में कुंजियाँ, और यह खुलता है अनुप्रयोगों के लिए माइक्रोसॉफ्ट विज़ुअल बेसिक खिड़की.

3। क्लिक करें सम्मिलित करें > मॉड्यूल, और निम्नलिखित कोड को इसमें पेस्ट करें मॉड्यूल विंडो.

वीबीए कोड: फ़ोल्डर और सबफ़ोल्डर में सभी फ़ाइल नामों की सूची बनाएं

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 में दस्तावेज़ सूची फ़ाइलें

उपरोक्त कोड के साथ, आप केवल फ़ाइल नामों को सूचीबद्ध कर सकते हैं, कभी-कभी, आपको अन्य विशेषताओं को सूचीबद्ध करने की आवश्यकता होती है, जैसे फ़ाइल आकार, फ़ाइल प्रकार, निर्मित समय, फ़ोल्डर युक्त इत्यादि। एक्सेल के लिए कुटूल इसमें एक उपयोगी कार्य शामिल है - फ़ाइल नाम सूची, इस सुविधा के साथ, आप किसी फ़ोल्डर और उसके सबफ़ोल्डर में सभी या विशिष्ट प्रकार के फ़ाइल नामों को तुरंत सूचीबद्ध कर सकते हैं।

एक्सेल के लिए कुटूल : 300 से अधिक उपयोगी एक्सेल ऐड-इन्स के साथ, 30 दिनों में बिना किसी सीमा के आज़माने के लिए निःशुल्क.

स्थापित करने के बाद एक्सेल के लिए कुटूल, कृपया निम्नलिखित चरणों का पालन करें:

1। क्लिक करें उद्यम > आयात निर्यात > फ़ाइल नाम सूची, स्क्रीनशॉट देखें:

2. में फ़ाइल नाम सूची संवाद बॉक्स में, निम्नलिखित कार्य करें:

A: क्लिक करें फ़ोल्डर सबफ़ोल्डर 7 में दस्तावेज़ सूची फ़ाइलेंउस फ़ोल्डर को चुनने के लिए बटन जिसमें आप फ़ाइल नाम सूचीबद्ध करना चाहते हैं;

B: वह फ़ाइल प्रकार निर्दिष्ट करें जिसे आप सूचीबद्ध करना चाहते हैं फ़ाइलें प्रकार अनुभाग;

C: एक फ़ाइल आकार इकाई का चयन करें जिसे आप प्रदर्शित करना चाहते हैं फ़ाइल आकार इकाई अनुभाग।

नोट: सबफ़ोल्डर से फ़ाइल नाम सूचीबद्ध करने के लिए, कृपया जांचें उपनिर्देशिकाओं में फ़ाइलें शामिल करें, आप भी जांच सकते हैं छुपी हुई फ़ाइलें और फ़ोल्डर्स शामिल करें जैसी तुम्हारी ज़रूरत है। यदि आप जाँच करें हाइपरलिंक बनाएं विकल्प, यह प्रत्येक फ़ाइल नाम और फ़ोल्डर के लिए हाइपरलिंक बनाएगा।

अभी डाउनलोड करें और निःशुल्क परीक्षण करें!

3। तब दबायें OK बटन, चयनित फ़ोल्डर और उसके सबफ़ोल्डर्स में मौजूद सभी फ़ाइलें एक नई वर्कशीट में निम्नलिखित विशेषताओं के साथ प्रदर्शित की गई हैं। स्क्रीनशॉट देखें:

फ़ोल्डर सबफ़ोल्डर 8 में दस्तावेज़ सूची फ़ाइलें

इस फ़ाइल नाम सूची उपयोगिता के बारे में अधिक विवरण जानने के लिए क्लिक करें।

एक्सेल के लिए कुटूल अभी डाउनलोड करें और निःशुल्क परीक्षण करें!


एक्सेल के लिए कुटूल: 300 से अधिक उपयोगी एक्सेल ऐड-इन्स के साथ, 30 दिनों में बिना किसी सीमा के आज़माने के लिए निःशुल्क। अभी डाउनलोड करें और निःशुल्क परीक्षण करें!

सर्वोत्तम कार्यालय उत्पादकता उपकरण

🤖 कुटूल्स एआई सहयोगी: निम्न के आधार पर डेटा विश्लेषण में क्रांति लाएं: बुद्धिमान निष्पादन   |  कोड जनरेट करें  |  कस्टम फ़ॉर्मूले बनाएं  |  डेटा का विश्लेषण करें और चार्ट बनाएं  |  कुटूल फ़ंक्शंस का आह्वान करें...
लोकप्रिय सुविधाएँ: डुप्लिकेट ढूंढें, हाइलाइट करें या पहचानें   |  रिक्त पंक्तियाँ हटाएँ   |  डेटा खोए बिना कॉलम या सेल को संयोजित करें   |   फॉर्मूला के बिना गोल ...
सुपर लुकअप: एकाधिक मानदंड VLookup    मल्टीपल वैल्यू वीलुकअप  |   अनेक शीटों में VLookup   |   फजी लुकअप ....
उन्नत ड्रॉप-डाउन सूची: शीघ्रता से ड्रॉप डाउन सूची बनाएं   |  आश्रित ड्रॉप डाउन सूची   |  बहु-चयन ड्रॉप डाउन सूची ....
स्तम्भ प्रबंधक: कॉलमों की एक विशिष्ट संख्या जोड़ें  |  कॉलम ले जाएँ  |  छिपे हुए कॉलम की दृश्यता स्थिति टॉगल करें  |  रेंज और कॉलम की तुलना करें ...
फीचर्ड फीचर्स: ग्रिड फोकस   |  डिजाइन देखें   |   बड़ा फॉर्मूला बार    कार्यपुस्तिका एवं शीट प्रबंधक   |  संसाधन लाइब्रेरी (ऑटो टेक्स्ट)   |  खजूर बीनने वाला   |  कार्यपत्रकों को संयोजित करें   |  एन्क्रिप्ट/डिक्रिप्ट सेल    सूची के अनुसार ईमेल भेजें   |  सुपर फ़िल्टर   |   विशेष फ़िल्टर (फ़िल्टर बोल्ड/इटैलिक/स्ट्राइकथ्रू...) ...
शीर्ष 15 टूलसेट12 टेक्स्ट टूल्स (पाठ जोड़ें, अक्षर हटाएँ, ...)   |   50 + चार्ट प्रकार (गैन्ट चार्ट, ...)   |   40+ प्रैक्टिकल सूत्र (जन्मदिन के आधार पर आयु की गणना करें, ...)   |   19 निवेशन टूल्स (QR कोड डालें, पथ से चित्र सम्मिलित करें, ...)   |   12 रूपांतरण टूल्स (शब्दों को संख्याएँ, मुद्रा रूपांतरण, ...)   |   7 विलय और विभाजन टूल्स (उन्नत संयोजन पंक्तियाँ, विभाजन कोशिकाओं, ...)   |   ... और अधिक

एक्सेल के लिए कुटूल के साथ अपने एक्सेल कौशल को सुपरचार्ज करें, और पहले जैसी दक्षता का अनुभव करें। एक्सेल के लिए कुटूल उत्पादकता बढ़ाने और समय बचाने के लिए 300 से अधिक उन्नत सुविधाएँ प्रदान करता है।  वह सुविधा प्राप्त करने के लिए यहां क्लिक करें जिसकी आपको सबसे अधिक आवश्यकता है...

Description


ऑफिस टैब ऑफिस में टैब्ड इंटरफ़ेस लाता है, और आपके काम को बहुत आसान बनाता है

  • Word, Excel, PowerPoint में टैब्ड संपादन और रीडिंग सक्षम करें, प्रकाशक, एक्सेस, विसियो और प्रोजेक्ट।
  • नई विंडो के बजाय एक ही विंडो के नए टैब में एकाधिक दस्तावेज़ खोलें और बनाएं।
  • आपकी उत्पादकता 50% बढ़ जाती है, और आपके लिए हर दिन सैकड़ों माउस क्लिक कम हो जाते हैं!
Comments (22)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Is it possible to combine this with your other VBA to include hyperlinks?

e.g. hyperlinks to all files in a folder including subfolders?
This comment was minimized by the moderator on the site
Hello, Johnny,
To list all filenames in a folder and subfolders, and create hyperlinks to these files in an Excel worksheet, please apply the following code:
Sub ListFilesAndCreateHyperlinks()
    Dim FolderPath As String
    Dim OutputRow As Integer
    Dim FileSystem As Object
    Dim TargetFolder As Object
    Dim File As Object
    
    ' Set the path to the folder from which to list files
    FolderPath = "C:\Your\Folder\Path"  ' Change this to the desired folder path
    
    ' Create an instance of the FileSystemObject
    Set FileSystem = CreateObject("Scripting.FileSystemObject")
    Set TargetFolder = FileSystem.GetFolder(FolderPath)
    
    ' Initialize the row for output in Excel
    OutputRow = 1
    
    ' Call the recursive procedure to list files and create hyperlinks
    ListFiles TargetFolder, OutputRow
    
    ' Clean up
    Set File = Nothing
    Set TargetFolder = Nothing
    Set FileSystem = Nothing
End Sub

Sub ListFiles(ByVal Folder As Object, ByRef Row As Integer)
    Dim SubFolder As Object
    Dim File As Object
    
    ' List all files in the folder
    For Each File In Folder.Files
        ' Insert the file name
        With ActiveSheet
            .Cells(Row, 1).Value = File.Name
            .Hyperlinks.Add Anchor:=.Cells(Row, 1), Address:=File.Path, TextToDisplay:=File.Name
        End With
        Row = Row + 1  ' Move to the next row
    Next File
    
    ' Recursively list files in subfolders
    For Each SubFolder In Folder.SubFolders
        ListFiles SubFolder, Row
    Next SubFolder
End Sub


Note: Replace "C:\Your\Folder\Path" in the code with the path of the folder from which you want to list files.

Please have a try, hope it can help you!
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!
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