VBA
Scripting.FileSystemObject
खोज…
FileSystemObject बनाना
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Sub FsoExample()
Dim fso As Object ' declare variable
Set fso = CreateObject("Scripting.FileSystemObject") ' Set it to be a File System Object
' now use it to check if a file exists
Dim myFilePath As String
myFilePath = "C:\mypath\to\myfile.txt"
If fso.FileExists(myFilePath) Then
' do something
Else
' file doesn't exist
MsgBox "File doesn't exist"
End If
End Sub
FileSystemObject का उपयोग करके एक टेक्स्ट फ़ाइल पढ़ना
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Sub ReadTextFileExample()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim sourceFile As Object
Dim myFilePath As String
Dim myFileText As String
myFilePath = "C:\mypath\to\myfile.txt"
Set sourceFile = fso.OpenTextFile(myFilePath, ForReading)
myFileText = sourceFile.ReadAll ' myFileText now contains the content of the text file
sourceFile.Close ' close the file
' do whatever you might need to do with the text
' You can also read it line by line
Dim line As String
Set sourceFile = fso.OpenTextFile(myFilePath, ForReading)
While Not sourceFile.AtEndOfStream ' while we are not finished reading through the file
line = sourceFile.ReadLine
' do something with the line...
Wend
sourceFile.Close
End Sub
FileSystemObject के साथ एक टेक्स्ट फ़ाइल बनाना
Sub CreateTextFileExample()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim targetFile As Object
Dim myFilePath As String
Dim myFileText As String
myFilePath = "C:\mypath\to\myfile.txt"
Set targetFile = fso.CreateTextFile(myFilePath, True) ' this will overwrite any existing file
targetFile.Write "This is some new text"
targetFile.Write " And this text will appear right after the first bit of text."
targetFile.WriteLine "This bit of text includes a newline character to ensure each write takes its own line."
targetFile.Close ' close the file
End Sub
FileSystemObject के साथ एक मौजूदा फ़ाइल में लिखना
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Sub WriteTextFileExample()
Dim oFso
Set oFso = CreateObject("Scripting.FileSystemObject")
Dim oFile as Object
Dim myFilePath as String
Dim myFileText as String
myFilePath = "C:\mypath\to\myfile.txt"
' First check if the file exists
If oFso.FileExists(myFilePath) Then
' this will overwrite any existing filecontent with whatever you send the file
' to append data to the end of an existing file, use ForAppending instead
Set oFile = oFso.OpenTextFile(myFilePath, ForWriting)
Else
' create the file instead
Set oFile = oFso.CreateTextFile(myFilePath) ' skipping the optional boolean for overwrite if exists as we already checked that the file doesn't exist.
End If
oFile.Write "This is some new text"
oFile.Write " And this text will appear right after the first bit of text."
oFile.WriteLine "This bit of text includes a newline character to ensure each write takes its own line."
oFile.Close ' close the file
End Sub
FileSystemObject का उपयोग कर एक निर्देशिका में फ़ाइलों को संकलित करें
प्रारंभिक बाउंड (Microsoft स्क्रिप्टिंग रनटाइम के लिए एक संदर्भ की आवश्यकता है):
Public Sub EnumerateDirectory()
Dim fso As Scripting.FileSystemObject
Set fso = New Scripting.FileSystemObject
Dim targetFolder As Folder
Set targetFolder = fso.GetFolder("C:\")
Dim foundFile As Variant
For Each foundFile In targetFolder.Files
Debug.Print foundFile.Name
Next
End Sub
देर से बाउंड:
Public Sub EnumerateDirectory()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim targetFolder As Object
Set targetFolder = fso.GetFolder("C:\")
Dim foundFile As Variant
For Each foundFile In targetFolder.Files
Debug.Print foundFile.Name
Next
End Sub
फ़ोल्डर और फ़ाइलों को पुन: गणना करें
प्रारंभिक बाउंड ( Microsoft Scripting Runtime
संदर्भ में)
Sub EnumerateFilesAndFolders( _
FolderPath As String, _
Optional MaxDepth As Long = -1, _
Optional CurrentDepth As Long = 0, _
Optional Indentation As Long = 2)
Dim FSO As Scripting.FileSystemObject
Set FSO = New Scripting.FileSystemObject
'Check the folder exists
If FSO.FolderExists(FolderPath) Then
Dim fldr As Scripting.Folder
Set fldr = FSO.GetFolder(FolderPath)
'Output the starting directory path
If CurrentDepth = 0 Then
Debug.Print fldr.Path
End If
'Enumerate the subfolders
Dim subFldr As Scripting.Folder
For Each subFldr In fldr.SubFolders
Debug.Print Space$((CurrentDepth + 1) * Indentation) & subFldr.Name
If CurrentDepth < MaxDepth Or MaxDepth = -1 Then
'Recursively call EnumerateFilesAndFolders
EnumerateFilesAndFolders subFldr.Path, MaxDepth, CurrentDepth + 1, Indentation
End If
Next subFldr
'Enumerate the files
Dim fil As Scripting.File
For Each fil In fldr.Files
Debug.Print Space$((CurrentDepth + 1) * Indentation) & fil.Name
Next fil
End If
End Sub
आउटपुट जब तर्कों के साथ बुलाया जाता है: EnumerateFilesAndFolders "C:\Test"
C:\Test
Documents
Personal
Budget.xls
Recipes.doc
Work
Planning.doc
Downloads
FooBar.exe
ReadMe.txt
आउटपुट जब तर्कों के साथ बुलाया जाता है: EnumerateFilesAndFolders "C:\Test", 0
C:\Test
Documents
Downloads
ReadMe.txt
आउटपुट जब तर्कों के साथ बुलाया जाता है: EnumerateFilesAndFolders "C:\Test", 1, 4
C:\Test
Documents
Personal
Work
Downloads
FooBar.exe
ReadMe.txt
फ़ाइल नाम से स्ट्रिप फ़ाइल एक्सटेंशन
Dim fso As New Scripting.FileSystemObject
Debug.Print fso.GetBaseName("MyFile.something.txt")
प्रिंट्स MyFile.something
ध्यान दें कि GetBaseName()
विधि पहले से ही एक फ़ाइल नाम में कई अवधियों को संभालती है।
फ़ाइल नाम से केवल एक्सटेंशन प्राप्त करें
Dim fso As New Scripting.FileSystemObject
Debug.Print fso.GetExtensionName("MyFile.something.txt")
प्रिंटों txt
ध्यान दें कि GetExtensionName()
पद्धति पहले से ही एक फ़ाइल नाम में एक से अधिक अवधि के संभालती है।
फ़ाइल पथ से केवल पथ प्राप्त करें
GetParentFolderName विधि किसी भी पथ के लिए मूल फ़ोल्डर देता है। हालांकि इसका उपयोग फ़ोल्डरों के साथ भी किया जा सकता है, यकीनन यह एक निरपेक्ष फ़ाइल पथ से पथ निकालने के लिए अधिक उपयोगी है:
Dim fso As New Scripting.FileSystemObject
Debug.Print fso.GetParentFolderName("C:\Users\Me\My Documents\SomeFile.txt")
प्रिंट C:\Users\Me\My Documents
ध्यान दें कि अनुगामी पथ विभाजक लौटे स्ट्रिंग में शामिल नहीं है।
फ़ोल्डर पथ और फ़ाइल नाम से पूर्ण पथ का निर्माण करने के लिए FSO.BuildPath का उपयोग करना
यदि आप फ़ोल्डर पथ के लिए उपयोगकर्ता इनपुट स्वीकार कर रहे हैं, तो आपको फ़ाइल पथ बनाने से पहले बैकस्लैश ( \
) को पीछे करने के लिए जाँच करनी पड़ सकती है। FSO.BuildPath
विधि इसे सरल बनाती है:
Const sourceFilePath As String = "C:\Temp" '<-- Without trailing backslash
Const targetFilePath As String = "C:\Temp\" '<-- With trailing backslash
Const fileName As String = "Results.txt"
Dim FSO As FileSystemObject
Set FSO = New FileSystemObject
Debug.Print FSO.BuildPath(sourceFilePath, fileName)
Debug.Print FSO.BuildPath(targetFilePath, fileName)
आउटपुट:
C:\Temp\Results.txt
C:\Temp\Results.txt