Dir फ़ंक्शन
VBA में फ़ाइलों और फ़ोल्डरों के साथ काम करते समय Dir फ़ंक्शन सबसे बुनियादी और आवश्यक फ़ंक्शनों में से एक है। यह विशिष्ट फ़ोल्डरों से फ़ाइल सूची प्राप्त करने या फ़ाइल अस्तित्व जांचने जैसे कार्यों के लिए अपरिहार्य है।
Dir फ़ंक्शन की आवश्यकता कब होती है
व्यावहारिक कार्यों में, आप Dir फ़ंक्शन का उपयोग इन स्थितियों में करेंगे:
- एकाधिक फ़ाइलों का बैच प्रोसेसिंग: डेटा एकत्रीकरण के लिए फ़ोल्डर में सभी Excel फ़ाइलें खोलना
- फ़ाइल अस्तित्व जांच: प्रोसेसिंग से पहले सत्यापित करना कि कोई विशिष्ट फ़ाइल मौजूद है
- बैकअप फ़ाइल बनाना: यदि फ़ाइल पहले से मौजूद है तो क्रमिक संख्या जोड़ना
- लॉग फ़ाइल प्रबंधन: पुरानी लॉग फ़ाइलें हटाना
Dir फ़ंक्शन की मूल बातें
मूल सिंटैक्स
Dir([पथनाम], [विशेषताएं])
Dir फ़ंक्शन निर्दिष्ट पैटर्न से मेल खाने वाली पहली फ़ाइल या फ़ोल्डर का नाम लौटाता है।
सबसे सरल उपयोग
Sub DirBasic()
Dim fileName As String
' वर्तमान फ़ोल्डर में पहली फ़ाइल प्राप्त करें
fileName = Dir("*.*")
Debug.Print "पहली फ़ाइल: " & fileName
End Sub
Dir को पहली बार कॉल करते समय, पथ निर्दिष्ट करें। बाद की कॉल के लिए, अगली फ़ाइल प्राप्त करने के लिए बिना आर्गुमेंट के कॉल करें।
फ़ाइल सूची प्राप्त करना
Sub GetFileList()
Dim folderPath As String
Dim fileName As String
' फ़ोल्डर पथ निर्दिष्ट करें
folderPath = "C:\Users\YourName\Documents\"
' पहली फ़ाइल प्राप्त करें
fileName = Dir(folderPath & "*.*")
' सभी फ़ाइलों के माध्यम से लूप करें
Do While fileName <> ""
Debug.Print fileName
' अगली फ़ाइल प्राप्त करें
fileName = Dir()
Loop
End Sub
Dir फ़ंक्शन पहली कॉल पर पथ की आवश्यकता होती है, फिर समान खोज मानदंड के साथ अगली फ़ाइल प्राप्त करने
के लिए बिना आर्गुमेंट के Dir() कॉल करें। जब सभी फ़ाइलें प्राप्त हो जाती हैं तो यह खाली स्ट्रिंग
("") लौटाता है।
वाइल्डकार्ड का उपयोग
Dir फ़ंक्शन वाइल्डकार्ड (* और ?) के साथ पैटर्न मिलान का समर्थन करता है:
*(तारांकन): शून्य या अधिक किसी भी वर्ण से मेल खाता है?(प्रश्न चिह्न): किसी भी एकल वर्ण से मेल खाता है
Sub WildcardExamples()
Dim fileName As String
Dim folderPath As String
folderPath = "C:\Data\"
' सभी फ़ाइलें
Debug.Print "=== सभी फ़ाइलें ==="
fileName = Dir(folderPath & "*.*")
Do While fileName <> ""
Debug.Print fileName
fileName = Dir()
Loop
' केवल Excel फ़ाइलें
Debug.Print "=== Excel फ़ाइलें ==="
fileName = Dir(folderPath & "*.xlsx")
Do While fileName <> ""
Debug.Print fileName
fileName = Dir()
Loop
End Sub
फ़ाइल अस्तित्व जांच
मूल अस्तित्व जांच
Function FileExists(filePath As String) As Boolean
' फ़ाइल मौजूद होने पर True, अन्यथा False लौटाता है
FileExists = (Dir(filePath) <> "")
End Function
Sub TestFileExists()
Dim testPath As String
testPath = "C:\Temp\sample.xlsx"
If FileExists(testPath) Then
MsgBox "फ़ाइल मौजूद है!", vbInformation
Else
MsgBox "फ़ाइल नहीं मिली।", vbExclamation
End If
End Sub
व्यावहारिक उदाहरण
सभी Excel फ़ाइलों से डेटा एकत्र करना
Sub CollectExcelData()
Dim folderPath As String
Dim fileName As String
Dim wb As Workbook
Dim summarySheet As Worksheet
Dim outputRow As Long
folderPath = "C:\MonthlyReports\"
Set summarySheet = ThisWorkbook.Sheets("Summary")
outputRow = 2
' Excel फ़ाइलें प्राप्त करें
fileName = Dir(folderPath & "*.xlsx")
Application.ScreenUpdating = False
Do While fileName <> ""
' कार्यपुस्तिका खोलें
Set wb = Workbooks.Open(folderPath & fileName, ReadOnly:=True)
' डेटा कॉपी करें
summarySheet.Cells(outputRow, 1).Value = fileName
summarySheet.Cells(outputRow, 2).Value = wb.Sheets(1).Range("A1").Value
' कार्यपुस्तिका बंद करें
wb.Close SaveChanges:=False
outputRow = outputRow + 1
fileName = Dir()
Loop
Application.ScreenUpdating = True
MsgBox "डेटा संग्रह पूर्ण!", vbInformation
End Sub
सारांश
Dir फ़ंक्शन VBA में फ़ाइल संचालन के लिए एक शक्तिशाली लेकिन सरल उपकरण है:
- वाइल्डकार्ड (
*,?) के साथ पैटर्न मिलान - पथ के साथ एक बार कॉल करें, फिर बाद की फ़ाइलों के लिए बिना आर्गुमेंट के
- जब कोई और फ़ाइल नहीं मिलती तो खाली स्ट्रिंग लौटाता है
- जटिल संचालन के लिए FileSystemObject पर विचार करें
अपने VBA प्रोजेक्ट्स में विभिन्न फ़ाइल संचालन को कुशलतापूर्वक संभालने के लिए इन मूल बातों में महारत हासिल करें।