FileSystemObject
जबकि VBA फ़ाइल और फ़ोल्डर संचालन के लिए Dir जैसे पारंपरिक फ़ंक्शन और Kill जैसे स्टेटमेंट प्रदान करता है, FileSystemObject (FSO) एक अधिक शक्तिशाली और लचीला दृष्टिकोण प्रदान करता है।
FileSystemObject क्या है?
FileSystemObject Windows फ़ाइल सिस्टम तक पहुंचने के लिए एक ऑब्जेक्ट है। यह Microsoft Scripting Runtime लाइब्रेरी का हिस्सा है और फ़ाइलों और फ़ोल्डरों को बनाने, हटाने, कॉपी करने, स्थानांतरित करने और पढ़ने/लिखने के लिए एक एकीकृत इंटरफ़ेस प्रदान करता है।
FileSystemObject की मुख्य विशेषताएं
- ऑब्जेक्ट-ओरिएंटेड: फ़ाइलों और फ़ोल्डरों को ऑब्जेक्ट्स के रूप में मानता है
- सुविधा संपन्न: लगभग सभी फ़ाइल और फ़ोल्डर संचालन का समर्थन करता है
- टेक्स्ट फ़ाइल हैंडलिंग: टेक्स्ट फ़ाइलों का सरल पढ़ना और लिखना
FileSystemObject के लिए “Microsoft Scripting Runtime” का संदर्भ सेट करने की सिफारिश की जाती है,
लेकिन आप CreateObject("Scripting.FileSystemObject") का उपयोग करके संदर्भ सेटअप के बिना भी इसका
उपयोग कर सकते हैं।
FileSystemObject का मूल उपयोग
इंस्टेंस बनाना
FileSystemObject का उपयोग करने के लिए, पहले आपको एक इंस्टेंस बनाना होगा।
CreateObject का उपयोग (अनुशंसित)
यह विधि संदर्भ सेटअप के बिना काम करती है, जिससे यह विभिन्न परिवेशों में अधिक पोर्टेबल हो जाती है।
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
' आपका कोड यहां...
' सफाई
Set fso = Nothing
फ़ाइल संचालन
फ़ाइल अस्तित्व जांचना
Sub CheckFileExists()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim filePath As String
filePath = "C:\Temp\sample.txt"
If fso.FileExists(filePath) Then
MsgBox "फ़ाइल मौजूद है"
Else
MsgBox "फ़ाइल मौजूद नहीं है"
End If
Set fso = Nothing
End Sub
फ़ाइलें कॉपी करना
Sub CopyFile()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim sourceFile As String
Dim destFile As String
sourceFile = "C:\Temp\original.xlsx"
destFile = "C:\Backup\copy.xlsx"
' फ़ाइल कॉपी करें (True ओवरराइट की अनुमति देता है)
fso.CopyFile sourceFile, destFile, True
MsgBox "फ़ाइल सफलतापूर्वक कॉपी हुई"
Set fso = Nothing
End Sub
फ़ाइलें हटाना
Sub DeleteFile()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim filePath As String
filePath = "C:\Temp\delete_me.txt"
If fso.FileExists(filePath) Then
' फ़ाइल हटाएं (True जबरदस्ती हटाता है)
fso.DeleteFile filePath, True
MsgBox "फ़ाइल सफलतापूर्वक हटाई गई"
Else
MsgBox "फ़ाइल मौजूद नहीं है"
End If
Set fso = Nothing
End Sub
जब आप DeleteFile से फ़ाइल हटाते हैं, तो यह स्थायी रूप से हटा दी जाती है और रीसायकल बिन में नहीं
जाती। निष्पादन से पहले हमेशा पुष्टि शामिल करें।
फ़ोल्डर संचालन
फ़ोल्डर बनाना
Sub CreateFolder()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim folderPath As String
folderPath = "C:\Temp\NewFolder"
If Not fso.FolderExists(folderPath) Then
fso.CreateFolder folderPath
MsgBox "फ़ोल्डर सफलतापूर्वक बनाया गया"
Else
MsgBox "फ़ोल्डर पहले से मौजूद है"
End If
Set fso = Nothing
End Sub
फ़ोल्डर सामग्री सूचीबद्ध करना
Sub ListFolderContents()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim folderPath As String
Dim folder As Object
Dim file As Object
folderPath = "C:\Documents"
If fso.FolderExists(folderPath) Then
Set folder = fso.GetFolder(folderPath)
' फ़ाइलें सूचीबद्ध करें
Debug.Print "=== फ़ाइलें ==="
For Each file In folder.Files
Debug.Print file.Name & " (" & file.Size & " बाइट्स)"
Next file
End If
Set fso = Nothing
End Sub
टेक्स्ट फ़ाइल संचालन
टेक्स्ट फ़ाइल में लिखना
Sub WriteTextFile()
Dim fso As Object
Dim ts As Object
Set fso = CreateObject("Scripting.FileSystemObject")
' नई फ़ाइल बनाएं (True = मौजूद होने पर ओवरराइट)
Set ts = fso.CreateTextFile("C:\Temp\output.txt", True)
ts.WriteLine "पंक्ति 1: नमस्ते, दुनिया!"
ts.WriteLine "पंक्ति 2: यह VBA है।"
ts.Close
MsgBox "फ़ाइल सफलतापूर्वक लिखी गई"
Set ts = Nothing
Set fso = Nothing
End Sub
टेक्स्ट फ़ाइल पढ़ना
Sub ReadTextFile()
Dim fso As Object
Dim ts As Object
Dim content As String
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists("C:\Temp\input.txt") Then
' पढ़ने के लिए खोलें (1 = ForReading)
Set ts = fso.OpenTextFile("C:\Temp\input.txt", 1)
' पूरी सामग्री पढ़ें
content = ts.ReadAll
ts.Close
Debug.Print content
End If
Set ts = Nothing
Set fso = Nothing
End Sub
सारांश
FileSystemObject VBA में फ़ाइल और फ़ोल्डर संचालन के लिए एक शक्तिशाली उपकरण है:
- पोर्टेबिलिटी के लिए
CreateObjectके साथ इंस्टेंस बनाएं - संचालन से पहले जांचने के लिए
FileExistsऔरFolderExistsका उपयोग करें - हटाने के संचालन से सावधान रहें—वे स्थायी हैं
- TextStream के साथ टेक्स्ट फ़ाइल संचालन सरल हैं
अपने VBA प्रोजेक्ट्स में जटिल फ़ाइल संचालन को कुशलतापूर्वक संभालने के लिए FileSystemObject में महारत हासिल करें।