FileSYstemObject''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject'
 FileSystemObject Sample Code
FileSYstemObject'
 Copyright 1998 Microsoft Corporation.   All Rights Reserved. 
FileSYstemObject'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject

FileSYstemObject
Option Explicit
FileSYstemObject
FileSYstemObject
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject'
 Regarding code quality:
FileSYstemObject'
 1) The following code does a lot of string manipulation by 
FileSYstemObject'
    concatenating short strings together with the "&" operator. 
FileSYstemObject'
    Since string concatenation is expensive, this is a very 
FileSYstemObject'
    inefficient way to write code. However, it is a very 
FileSYstemObject'
    maintainable way to write code, and is used here because this 
FileSYstemObject'
    program performs extensive disk operations, and because the 
FileSYstemObject'
    disk is much slower than the memory operations required to 
FileSYstemObject'
    concatenate the strings. Keep in mind that this is demonstration 
FileSYstemObject'
    code, not production code.
FileSYstemObject'
FileSYstemObject'
 2) "Option Explicit" is used, because declared variable access is 
FileSYstemObject'
    slightly faster than undeclared variable access. It also prevents 
FileSYstemObject'
    bugs from creeping into your code, such as when you misspell 
FileSYstemObject'
    DriveTypeCDROM as DriveTypeCDORM.
FileSYstemObject'
FileSYstemObject'
 3) Error handling is absent from this code, to make the code more 
FileSYstemObject'
    readable. Although precautions have been taken to ensure that the 
FileSYstemObject'
    code will not error in common cases, file systems can be 
FileSYstemObject'
    unpredictable. In production code, use On Error Resume Next and 
FileSYstemObject'
    the Err object to trap possible errors.
FileSYstemObject'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject

FileSYstemObject
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject'
 Some handy global variables
FileSYstemObject'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject
Dim TabStop
FileSYstemObject
Dim NewLine
FileSYstemObject
FileSYstemObject
Const TestDrive = "C"
FileSYstemObject
Const TestFilePath = "C:\Test"
FileSYstemObject

FileSYstemObject
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject'
 Constants returned by Drive.DriveType
FileSYstemObject'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject
Const DriveTypeRemovable = 1
FileSYstemObject
Const DriveTypeFixed = 2
FileSYstemObject
Const DriveTypeNetwork = 3
FileSYstemObject
Const DriveTypeCDROM = 4
FileSYstemObject
Const DriveTypeRAMDisk = 5
FileSYstemObject
FileSYstemObject
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject'
 Constants returned by File.Attributes
FileSYstemObject'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject
Const FileAttrNormal   = 0
FileSYstemObject
Const FileAttrReadOnly = 1
FileSYstemObject
Const FileAttrHidden = 2
FileSYstemObject
Const FileAttrSystem = 4
FileSYstemObject
Const FileAttrVolume = 8
FileSYstemObject
Const FileAttrDirectory = 16
FileSYstemObject
Const FileAttrArchive = 32 
FileSYstemObject
Const FileAttrAlias = 64
FileSYstemObject
Const FileAttrCompressed = 128
FileSYstemObject
FileSYstemObject
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject'
 Constants for opening files
FileSYstemObject'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject
Const OpenFileForReading = 1 
FileSYstemObject
Const OpenFileForWriting = 2 
FileSYstemObject
Const OpenFileForAppending = 8 
FileSYstemObject
FileSYstemObject
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject'
 ShowDriveType
FileSYstemObject'
 Purpose: 
FileSYstemObject'
    Generates a string describing the drive type of a given Drive object.
FileSYstemObject'
 Demonstrates the following 
FileSYstemObject'
  - Drive.DriveType
FileSYstemObject'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject
Function ShowDriveType(Drive)
FileSYstemObject
FileSYstemObject   
Dim S
FileSYstemObject   
FileSYstemObject   
Select Case Drive.DriveType
FileSYstemObject   
Case DriveTypeRemovable
FileSYstemObject      S 
= "Removable"
FileSYstemObject
   Case DriveTypeFixed
FileSYstemObject      S 
= "Fixed"
FileSYstemObject
   Case DriveTypeNetwork
FileSYstemObject      S 
= "Network"
FileSYstemObject
   Case DriveTypeCDROM
FileSYstemObject      S 
= "CD-ROM"
FileSYstemObject
   Case DriveTypeRAMDisk
FileSYstemObject      S 
= "RAM Disk"
FileSYstemObject
   Case Else
FileSYstemObject      S 
= "Unknown"
FileSYstemObject
   End Select
FileSYstemObject
FileSYstemObject   ShowDriveType 
= S
FileSYstemObject
FileSYstemObject
End Function
FileSYstemObject
FileSYstemObject
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject'
 ShowFileAttr
FileSYstemObject'
 Purpose: 
FileSYstemObject'
    Generates a string describing the attributes of a file or folder.
FileSYstemObject'
 Demonstrates the following 
FileSYstemObject'
  - File.Attributes
FileSYstemObject'
  - Folder.Attributes
FileSYstemObject'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject

FileSYstemObject
Function ShowFileAttr(File) ' File can be a file or folder
FileSYstemObject

FileSYstemObject   
Dim S
FileSYstemObject   
Dim Attr
FileSYstemObject   
FileSYstemObject   Attr 
= File.Attributes
FileSYstemObject
FileSYstemObject   
If Attr = 0 Then
FileSYstemObject      ShowFileAttr 
= "Normal"
FileSYstemObject
      Exit Function
FileSYstemObject   
End If
FileSYstemObject
FileSYstemObject   
If Attr And FileAttrDirectory Then S = S & "Directory "
FileSYstemObject
   If Attr And FileAttrReadOnly Then S = S & "Read-Only "
FileSYstemObject
   If Attr And FileAttrHidden Then S = S & "Hidden "
FileSYstemObject
   If Attr And FileAttrSystem Then S = S & "System "
FileSYstemObject
   If Attr And FileAttrVolume Then S = S & "Volume "
FileSYstemObject
   If Attr And FileAttrArchive Then S = S & "Archive "
FileSYstemObject
   If Attr And FileAttrAlias Then S = S & "Alias "
FileSYstemObject
   If Attr And FileAttrCompressed Then S = S & "Compressed "
FileSYstemObject

FileSYstemObject
   ShowFileAttr = S
FileSYstemObject
FileSYstemObject
End Function
FileSYstemObject
FileSYstemObject
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject'
 GenerateDriveInformation
FileSYstemObject'
 Purpose: 
FileSYstemObject'
    Generates a string describing the current state of the 
FileSYstemObject'
    available drives.
FileSYstemObject'
 Demonstrates the following 
FileSYstemObject'
  - FileSystemObject.Drives 
FileSYstemObject'
  - Iterating the Drives collection
FileSYstemObject'
  - Drives.Count
FileSYstemObject'
  - Drive.AvailableSpace
FileSYstemObject'
  - Drive.DriveLetter
FileSYstemObject'
  - Drive.DriveType
FileSYstemObject'
  - Drive.FileSystem
FileSYstemObject'
  - Drive.FreeSpace
FileSYstemObject'
  - Drive.IsReady
FileSYstemObject'
  - Drive.Path
FileSYstemObject'
  - Drive.SerialNumber
FileSYstemObject'
  - Drive.ShareName
FileSYstemObject'
  - Drive.TotalSize
FileSYstemObject'
  - Drive.VolumeName
FileSYstemObject'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject

FileSYstemObject
Function GenerateDriveInformation(FSO)
FileSYstemObject
FileSYstemObject   
Dim Drives
FileSYstemObject   
Dim Drive
FileSYstemObject   
Dim S
FileSYstemObject
FileSYstemObject   
Set Drives = FSO.Drives
FileSYstemObject   S 
= "Number of drives:" & TabStop & Drives.Count & NewLine & NewLine
FileSYstemObject
FileSYstemObject   
' Construct 1st line of report.
FileSYstemObject
   S = S & String(2, TabStop) & "Drive" 
FileSYstemObject   S 
= S & String(3, TabStop) & "File" 
FileSYstemObject   S 
= S & TabStop & "Total"
FileSYstemObject
   S = S & TabStop & "Free"
FileSYstemObject
   S = S & TabStop & "Available" 
FileSYstemObject   S 
= S & TabStop & "Serial" & NewLine
FileSYstemObject
FileSYstemObject   
' Construct 2nd line of report.
FileSYstemObject
   S = S & "Letter"
FileSYstemObject
   S = S & TabStop & "Path"
FileSYstemObject
   S = S & TabStop & "Type"
FileSYstemObject
   S = S & TabStop & "Ready?"
FileSYstemObject
   S = S & TabStop & "Name"
FileSYstemObject
   S = S & TabStop & "System"
FileSYstemObject
   S = S & TabStop & "Space"
FileSYstemObject
   S = S & TabStop & "Space"
FileSYstemObject
   S = S & TabStop & "Space"
FileSYstemObject
   S = S & TabStop & "Number" & NewLine   
FileSYstemObject
FileSYstemObject   
' Separator line.
FileSYstemObject
   S = S & String(105"-"& NewLine
FileSYstemObject
FileSYstemObject   
For Each Drive In Drives
FileSYstemObject      S 
= S & Drive.DriveLetter
FileSYstemObject      S 
= S & TabStop & Drive.Path
FileSYstemObject      S 
= S & TabStop & ShowDriveType(Drive)
FileSYstemObject      S 
= S & TabStop & Drive.IsReady
FileSYstemObject
FileSYstemObject      
If Drive.IsReady Then
FileSYstemObject         
If DriveTypeNetwork = Drive.DriveType Then
FileSYstemObject            S 
= S & TabStop & Drive.ShareName 
FileSYstemObject         
Else
FileSYstemObject            S 
= S & TabStop & Drive.VolumeName 
FileSYstemObject         
End If
FileSYstemObject         S 
= S & TabStop & Drive.FileSystem
FileSYstemObject         S 
= S & TabStop & Drive.TotalSize
FileSYstemObject         S 
= S & TabStop & Drive.FreeSpace
FileSYstemObject         S 
= S & TabStop & Drive.AvailableSpace
FileSYstemObject         S 
= S & TabStop & Hex(Drive.SerialNumber)
FileSYstemObject      
End If
FileSYstemObject
FileSYstemObject      S 
= S & NewLine
FileSYstemObject
FileSYstemObject   
Next
FileSYstemObject
FileSYstemObject   GenerateDriveInformation 
= S
FileSYstemObject
FileSYstemObject
End Function
FileSYstemObject
FileSYstemObject
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject'
 GenerateFileInformation
FileSYstemObject'
 Purpose: 
FileSYstemObject'
    Generates a string describing the current state of a file.
FileSYstemObject'
 Demonstrates the following 
FileSYstemObject'
  - File.Path
FileSYstemObject'
  - File.Name
FileSYstemObject'
  - File.Type
FileSYstemObject'
  - File.DateCreated
FileSYstemObject'
  - File.DateLastAccessed
FileSYstemObject'
  - File.DateLastModified
FileSYstemObject'
  - File.Size
FileSYstemObject'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject

FileSYstemObject
Function GenerateFileInformation(File)
FileSYstemObject
FileSYstemObject   
Dim S
FileSYstemObject
FileSYstemObject   S 
= NewLine & "Path:" & TabStop & File.Path
FileSYstemObject   S 
= S & NewLine & "Name:" & TabStop & File.Name
FileSYstemObject   S 
= S & NewLine & "Type:" & TabStop & File.Type
FileSYstemObject   S 
= S & NewLine & "Attribs:" & TabStop & ShowFileAttr(File)
FileSYstemObject   S 
= S & NewLine & "Created:" & TabStop & File.DateCreated
FileSYstemObject   S 
= S & NewLine & "Accessed:" & TabStop & File.DateLastAccessed
FileSYstemObject   S 
= S & NewLine & "Modified:" & TabStop & File.DateLastModified
FileSYstemObject   S 
= S & NewLine & "Size" & TabStop & File.Size & NewLine
FileSYstemObject
FileSYstemObject   GenerateFileInformation 
= S
FileSYstemObject
FileSYstemObject
End Function
FileSYstemObject
FileSYstemObject
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject'
 GenerateFolderInformation
FileSYstemObject'
 Purpose: 
FileSYstemObject'
    Generates a string describing the current state of a folder.
FileSYstemObject'
 Demonstrates the following 
FileSYstemObject'
  - Folder.Path
FileSYstemObject'
  - Folder.Name
FileSYstemObject'
  - Folder.DateCreated
FileSYstemObject'
  - Folder.DateLastAccessed
FileSYstemObject'
  - Folder.DateLastModified
FileSYstemObject'
  - Folder.Size
FileSYstemObject'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject

FileSYstemObject
Function GenerateFolderInformation(Folder)
FileSYstemObject
FileSYstemObject   
Dim S
FileSYstemObject
FileSYstemObject   S 
= "Path:" & TabStop & Folder.Path
FileSYstemObject   S 
= S & NewLine & "Name:" & TabStop & Folder.Name
FileSYstemObject   S 
= S & NewLine & "Attribs:" & TabStop & ShowFileAttr(Folder)
FileSYstemObject   S 
= S & NewLine & "Created:" & TabStop & Folder.DateCreated
FileSYstemObject   S 
= S & NewLine & "Accessed:" & TabStop & Folder.DateLastAccessed
FileSYstemObject   S 
= S & NewLine & "Modified:" & TabStop & Folder.DateLastModified
FileSYstemObject   S 
= S & NewLine & "Size:" & TabStop & Folder.Size & NewLine
FileSYstemObject
FileSYstemObject   GenerateFolderInformation 
= S
FileSYstemObject
FileSYstemObject
End Function
FileSYstemObject
FileSYstemObject
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject'
 GenerateAllFolderInformation
FileSYstemObject'
 Purpose: 
FileSYstemObject'
    Generates a string describing the current state of a
FileSYstemObject'
    folder and all files and subfolders.
FileSYstemObject'
 Demonstrates the following 
FileSYstemObject'
  - Folder.Path
FileSYstemObject'
  - Folder.SubFolders
FileSYstemObject'
  - Folders.Count
FileSYstemObject'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject

FileSYstemObject
Function GenerateAllFolderInformation(Folder)
FileSYstemObject
FileSYstemObject   
Dim S
FileSYstemObject   
Dim SubFolders
FileSYstemObject   
Dim SubFolder
FileSYstemObject   
Dim Files
FileSYstemObject   
Dim File
FileSYstemObject
FileSYstemObject   S 
= "Folder:" & TabStop & Folder.Path & NewLine & NewLine
FileSYstemObject   
Set Files = Folder.Files
FileSYstemObject
FileSYstemObject   
If 1 = Files.Count Then
FileSYstemObject      S 
= S & "There is 1 file" & NewLine
FileSYstemObject   
Else
FileSYstemObject      S 
= S & "There are " & Files.Count & " files" & NewLine
FileSYstemObject   
End If
FileSYstemObject
FileSYstemObject   
If Files.Count <> 0 Then
FileSYstemObject      
For Each File In Files
FileSYstemObject         S 
= S & GenerateFileInformation(File)
FileSYstemObject      
Next
FileSYstemObject   
End If
FileSYstemObject
FileSYstemObject   
Set SubFolders = Folder.SubFolders
FileSYstemObject
FileSYstemObject   
If 1 = SubFolders.Count Then
FileSYstemObject      S 
= S & NewLine & "There is 1 sub folder" & NewLine & NewLine
FileSYstemObject   
Else
FileSYstemObject      S 
= S & NewLine & "There are " & SubFolders.Count & " sub folders" _
FileSYstemObject      NewLine 
& NewLine
FileSYstemObject   
End If
FileSYstemObject
FileSYstemObject   
If SubFolders.Count <> 0 Then
FileSYstemObject      
For Each SubFolder In SubFolders
FileSYstemObject         S 
= S & GenerateFolderInformation(SubFolder)
FileSYstemObject      
Next
FileSYstemObject      S 
= S & NewLine
FileSYstemObject      
For Each SubFolder In SubFolders
FileSYstemObject         S 
= S & GenerateAllFolderInformation(SubFolder)
FileSYstemObject      
Next
FileSYstemObject   
End If
FileSYstemObject
FileSYstemObject   GenerateAllFolderInformation 
= S
FileSYstemObject
FileSYstemObject
End Function
FileSYstemObject
FileSYstemObject
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject'
 GenerateTestInformation
FileSYstemObject'
 Purpose: 
FileSYstemObject'
    Generates a string describing the current state of the C:\Test
FileSYstemObject'
    folder and all files and subfolders.
FileSYstemObject'
 Demonstrates the following 
FileSYstemObject'
  - FileSystemObject.DriveExists
FileSYstemObject'
  - FileSystemObject.FolderExists
FileSYstemObject'
  - FileSystemObject.GetFolder
FileSYstemObject'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject

FileSYstemObject
Function GenerateTestInformation(FSO)
FileSYstemObject
FileSYstemObject   
Dim TestFolder
FileSYstemObject   
Dim S
FileSYstemObject
FileSYstemObject   
If Not FSO.DriveExists(TestDrive) Then Exit Function
FileSYstemObject   
If Not FSO.FolderExists(TestFilePath) Then Exit Function
FileSYstemObject
FileSYstemObject   
Set TestFolder = FSO.GetFolder(TestFilePath)
FileSYstemObject
FileSYstemObject   GenerateTestInformation 
= GenerateAllFolderInformation(TestFolder) 
FileSYstemObject
FileSYstemObject
End Function
FileSYstemObject
FileSYstemObject
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject'
 DeleteTestDirectory
FileSYstemObject'
 Purpose: 
FileSYstemObject'
    Cleans up the test directory.
FileSYstemObject'
 Demonstrates the following 
FileSYstemObject'
  - FileSystemObject.GetFolder
FileSYstemObject'
  - FileSystemObject.DeleteFile
FileSYstemObject'
  - FileSystemObject.DeleteFolder
FileSYstemObject'
  - Folder.Delete
FileSYstemObject'
  - File.Delete
FileSYstemObject'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject

FileSYstemObject
Sub DeleteTestDirectory(FSO)
FileSYstemObject
FileSYstemObject   
Dim TestFolder
FileSYstemObject   
Dim SubFolder
FileSYstemObject   
Dim File
FileSYstemObject   
FileSYstemObject   
' Two ways to delete a file:
FileSYstemObject

FileSYstemObject   FSO.DeleteFile(TestFilePath 
& "\Beatles\OctopusGarden.txt")
FileSYstemObject
FileSYstemObject   
Set File = FSO.GetFile(TestFilePath & "\Beatles\BathroomWindow.txt")
FileSYstemObject   File.Delete   
FileSYstemObject
FileSYstemObject   
' Two ways to delete a folder:
FileSYstemObject
   FSO.DeleteFolder(TestFilePath & "\Beatles")
FileSYstemObject   FSO.DeleteFile(TestFilePath 
& "\ReadMe.txt")
FileSYstemObject   
Set TestFolder = FSO.GetFolder(TestFilePath)
FileSYstemObject   TestFolder.Delete
FileSYstemObject
FileSYstemObject
End Sub
FileSYstemObject
FileSYstemObject
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject'
 CreateLyrics
FileSYstemObject'
 Purpose: 
FileSYstemObject'
    Builds a couple of text files in a folder.
FileSYstemObject'
 Demonstrates the following 
FileSYstemObject'
  - FileSystemObject.CreateTextFile
FileSYstemObject'
  - TextStream.WriteLine
FileSYstemObject'
  - TextStream.Write
FileSYstemObject'
  - TextStream.WriteBlankLines
FileSYstemObject'
  - TextStream.Close
FileSYstemObject'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject

FileSYstemObject
Sub CreateLyrics(Folder)
FileSYstemObject
FileSYstemObject   
Dim TextStream
FileSYstemObject   
FileSYstemObject   
Set TextStream = Folder.CreateTextFile("OctopusGarden.txt")
FileSYstemObject   
FileSYstemObject   
' Note that this does not add a line feed to the file.
FileSYstemObject
   TextStream.Write("Octopus' Garden "
FileSYstemObject   TextStream.WriteLine(
"(by Ringo Starr)")
FileSYstemObject   TextStream.WriteBlankLines(
1)
FileSYstemObject   TextStream.WriteLine(
"I'd like to be under the sea in an octopus' garden in the shade,")
FileSYstemObject   TextStream.WriteLine(
"He'd let us in, knows where we've been -- in his octopus' garden in the shade.")
FileSYstemObject   TextStream.WriteBlankLines(
2)
FileSYstemObject   
FileSYstemObject   TextStream.Close
FileSYstemObject
FileSYstemObject   
Set TextStream = Folder.CreateTextFile("BathroomWindow.txt")
FileSYstemObject   TextStream.WriteLine(
"She Came In Through The Bathroom Window (by Lennon/McCartney)")
FileSYstemObject   TextStream.WriteLine(
"")
FileSYstemObject   TextStream.WriteLine(
"She came in through the bathroom window protected by a silver spoon")
FileSYstemObject   TextStream.WriteLine(
"But now she sucks her thumb and wanders by the banks of her own lagoon")
FileSYstemObject   TextStream.WriteBlankLines(
2)
FileSYstemObject   TextStream.Close
FileSYstemObject
FileSYstemObject
End Sub
FileSYstemObject
FileSYstemObject
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject'
 GetLyrics
FileSYstemObject'
 Purpose: 
FileSYstemObject'
    Displays the contents of the lyrics files.
FileSYstemObject'
 Demonstrates the following 
FileSYstemObject'
  - FileSystemObject.OpenTextFile
FileSYstemObject'
  - FileSystemObject.GetFile
FileSYstemObject'
  - TextStream.ReadAll
FileSYstemObject'
  - TextStream.Close
FileSYstemObject'
  - File.OpenAsTextStream
FileSYstemObject'
  - TextStream.AtEndOfStream
FileSYstemObject'
  - TextStream.ReadLine
FileSYstemObject'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject

FileSYstemObject
Function GetLyrics(FSO)
FileSYstemObject
FileSYstemObject   
Dim TextStream
FileSYstemObject   
Dim S
FileSYstemObject   
Dim File
FileSYstemObject
FileSYstemObject   
' There are several ways to open a text file, and several 
FileSYstemObject
   ' ways to read the data out of a file. Here's two ways 
FileSYstemObject
   ' to do each:
FileSYstemObject

FileSYstemObject   
Set TextStream = FSO.OpenTextFile(TestFilePath & "\Beatles\OctopusGarden.txt", OpenFileForReading)
FileSYstemObject   
FileSYstemObject   S 
= TextStream.ReadAll & NewLine & NewLine
FileSYstemObject   TextStream.Close
FileSYstemObject
FileSYstemObject   
Set File = FSO.GetFile(TestFilePath & "\Beatles\BathroomWindow.txt")
FileSYstemObject   
Set TextStream = File.OpenAsTextStream(OpenFileForReading)
FileSYstemObject   
Do    While Not TextStream.AtEndOfStream
FileSYstemObject      S 
= S & TextStream.ReadLine & NewLine
FileSYstemObject   
Loop
FileSYstemObject   TextStream.Close
FileSYstemObject
FileSYstemObject   GetLyrics 
= S
FileSYstemObject   
FileSYstemObject
End Function
FileSYstemObject
FileSYstemObject
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject'
 BuildTestDirectory
FileSYstemObject'
 Purpose: 
FileSYstemObject'
    Builds a directory hierarchy to demonstrate the FileSystemObject.
FileSYstemObject'
    We'll build a hierarchy in this order:
FileSYstemObject'
       C:\Test
FileSYstemObject'
       C:\Test\ReadMe.txt
FileSYstemObject'
       C:\Test\Beatles
FileSYstemObject'
       C:\Test\Beatles\OctopusGarden.txt
FileSYstemObject'
       C:\Test\Beatles\BathroomWindow.txt
FileSYstemObject'
 Demonstrates the following 
FileSYstemObject'
  - FileSystemObject.DriveExists
FileSYstemObject'
  - FileSystemObject.FolderExists
FileSYstemObject'
  - FileSystemObject.CreateFolder
FileSYstemObject'
  - FileSystemObject.CreateTextFile
FileSYstemObject'
  - Folders.Add
FileSYstemObject'
  - Folder.CreateTextFile
FileSYstemObject'
  - TextStream.WriteLine
FileSYstemObject'
  - TextStream.Close
FileSYstemObject'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject

FileSYstemObject
Function BuildTestDirectory(FSO)
FileSYstemObject
FileSYstemObject   
Dim TestFolder
FileSYstemObject   
Dim SubFolders
FileSYstemObject   
Dim SubFolder
FileSYstemObject   
Dim TextStream
FileSYstemObject
FileSYstemObject   
' Bail out if (a) the drive does not exist, or if (b) the directory is being built 
FileSYstemObject
   ' already exists.
FileSYstemObject

FileSYstemObject   
If Not FSO.DriveExists(TestDrive) Then
FileSYstemObject      BuildTestDirectory 
= False
FileSYstemObject      
Exit Function
FileSYstemObject   
End If
FileSYstemObject
FileSYstemObject   
If FSO.FolderExists(TestFilePath) Then
FileSYstemObject      BuildTestDirectory 
= False
FileSYstemObject      
Exit Function
FileSYstemObject   
End If
FileSYstemObject
FileSYstemObject   
Set TestFolder = FSO.CreateFolder(TestFilePath)
FileSYstemObject
FileSYstemObject   
Set TextStream = FSO.CreateTextFile(TestFilePath & "\ReadMe.txt")
FileSYstemObject   TextStream.WriteLine(
"My song lyrics collection")
FileSYstemObject   TextStream.Close
FileSYstemObject
FileSYstemObject   
Set SubFolders = TestFolder.SubFolders
FileSYstemObject   
Set SubFolder = SubFolders.Add("Beatles")
FileSYstemObject   CreateLyrics SubFolder   
FileSYstemObject   BuildTestDirectory 
= True
FileSYstemObject
FileSYstemObject
End Function
FileSYstemObject
FileSYstemObject
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject'
 The main routine
FileSYstemObject'
 First, it creates a test directory, along with some subfolders 
FileSYstemObject'
 and files. Then, it dumps some information about the available 
FileSYstemObject'
 disk drives and about the test directory, and then cleans 
FileSYstemObject'
 everything up again.
FileSYstemObject'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FileSYstemObject

FileSYstemObject
Sub Main
FileSYstemObject
FileSYstemObject   
Dim FSO
FileSYstemObject
FileSYstemObject   
' Set up global data.
FileSYstemObject
   TabStop = Chr(9)
FileSYstemObject   NewLine 
= Chr(10)
FileSYstemObject   
FileSYstemObject   
Set FSO = CreateObject("Scripting.FileSystemObject")
FileSYstemObject
FileSYstemObject   
If Not BuildTestDirectory(FSO) Then 
FileSYstemObject      Print 
"Test directory already exists or cannot be created.   Cannot continue."
FileSYstemObject
      Exit Sub
FileSYstemObject   
End If
FileSYstemObject
FileSYstemObject   Print GenerateDriveInformation(FSO) 
& NewLine & NewLine
FileSYstemObject   Print GenerateTestInformation(FSO) 
& NewLine & NewLine
FileSYstemObject   Print GetLyrics(FSO) 
& NewLine & NewLine
FileSYstemObject   DeleteTestDirectory(FSO)
FileSYstemObject
FileSYstemObject
End Sub

相关文章:

  • 2021-08-07
  • 2021-10-31
  • 2021-07-12
  • 2022-02-10
  • 2022-12-23
  • 2022-12-23
  • 2022-01-02
  • 2022-03-10
猜你喜欢
  • 2022-02-01
  • 2021-07-01
  • 2021-08-28
  • 2022-02-26
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案