三、利用FileSystemObject對象來處理檔案 
FileSystemObject物件模型,是微軟提供的專門用來訪問電腦檔案系統的,具有大量的屬性、方法和事件。其使用物件導向的“object.method”文法來處理檔案夾和檔案,使用起來十分方便(需Office 2000以後版本)。FileSystemObject並不是VBA的一部分,它是以一個COM組件的形式提供的。因此,要使用先要建立FileSystemObject對象。
FileSystemObject物件模型包含了下面的對象和集合:
·FileSystemObject 主對象,包含用來建立、刪除和獲得有關資訊,以及用來操作磁碟機、檔案夾和檔案的方法和屬性。
·Drive   對象,包含用來獲得資訊的方法和屬性,這些資訊是關於串連在系統上的磁碟機的,如有多少可用空間等。磁碟機不一定是硬碟,也可以是CD-ROM、隨身碟甚至是通過網路在邏輯上串連的硬碟(如公司裡部門共用的伺服器網路硬碟)。
·Drives  集合,提供磁碟機的列表,這些磁碟機以實物或在邏輯上與系統相串連。Drives集合包括所有磁碟機,與類型無關。
·File   對象,包含用來建立、刪除或移動檔案的方法和屬性。
·Files   集合,提供包含在檔案夾內的所有檔案的列表。
·Folder  對象,包含用來建立、刪除或移動檔案夾的方法和屬性。
·Folders  集合,提供包含在檔案夾內的所有檔案夾的列表。
·TextStream  對象,用來讀寫文字檔。
(一)準備工作
要使用FileSystemObject對象,先要建立它。建立FileSystemObject對象要使用CreatObject函數。CreateObject 函數用來建立並返回一個對 ActiveX 對象的引用。
文法:CreateObject(class,[servername])
class 是要建立的應用程式名稱和類。
servername 要在其上建立對象的網路伺服器名稱。(如果要在遠端電腦上建立對象才用)
class 參數使用 appname.objecttype 這種文法,包括以下部分:
appname 必需的;提供該對象的應用程式名稱。
objecttype 必需的;待建立對象的類型或類。
因此,我們用下面的代碼建立FileSystemObject對象:
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Scripting是類型庫的名稱,FileSystemObject就是要建立的對象的名字。
同樣我們可以建立Dictionary 對象如下:
Dim d
Set d = CreateObject("Scripting.Dictionary")
(二)FileSystemObject對象的方法
FileSystemObject物件模型中有些功能是重複的,如可用FileSystemObject對象的CpoyFile方法,也可用File對象的Copy方法來複製檔案。下面先介紹FileSystemObject對象的方法。
1、GetDrive 方法
文法:object.GetDrive drivespec
drivespec參數可以是一個磁碟機字元(c)、一個磁碟機字元加一個冒號(c:)、一個磁碟機字元加冒號和路徑分隔字元(c:/)或任何網際網路共用的說明(//computer2/share1)。
作用:返回一個與指定路徑中的磁碟機相對應的 Drive 對象。
樣本:
Dim d
Set d = fso.GetDrive("D:")  '變數d就代表了磁碟機D對象
如果 drivespec 不符合任何一種可以接受的形式或者不存在,則發生一個錯誤。
注意:為簡潔,樣本中都假定fso是已經建立的FileSystemObject對象
2、GetDriveName 方法
文法:object.GetDriveName(path)
作用:返回一個包含指定路徑的磁碟機名字的字串。
樣本:
Debug.Print fso.GetDriveName("c:/test.txt")  '立即視窗顯示"c:"
3、GetExtensionName 方法
文法:object.GetExtensionName(path)
作用:返回一個包含路徑中最後組件副檔名的字串。
樣本:
Debug.Print fso.GetExtensionName("c:/test.txt")  '立即視窗顯示"txt"
4、GetBaseName 方法
文法:object.GetBaseName(path)
作用:返回一個包含路徑中最後組件的基本名字(去掉任何副檔名)的字串。
樣本:
Debug.Print fso.GetBaseName("c:/abc/test.txt")  '立即視窗顯示"test"
5、GetAbsolutePathName 方法
文法:object.GetAbsolutePathName(pathspec)
作用:從提供的路徑說明中返回一個完整、明確的路徑。
樣本:
如果pathspec為空白字串"",則返回當前路徑。假設當前路徑為C:/Documents and Settings/yc/My Documents
Debug.Print fs.GetAbsolutePathName("")  '顯示C:/Documents and Settings/yc/My Documents
Debug.Print fs.GetAbsolutePathName("c:..") '顯示C:/Documents and Settings/yc,即上層目錄
Debug.Print fs.GetAbsolutePathName("abc") '顯示C:/Documents and Settings/yc/My Documents/abc
Debug.Print fs.GetAbsolutePathName("c:/test.txt") '顯示C:/test.txt
6、GetFile 方法
文法:object.GetFile(filespec)
作用:返回一個和指定路徑中檔案相對應的 File 對象。
樣本:
Dim f
Set f = fso.GetFile("c:/test.txt")  '變數f就代表了檔案test.txt對象
注意:如果指定的檔案不存在,則發生一個錯誤。
7、GetFileName 方法
文法:object.GetFileName(pathspec)
作用:返回指定路徑中的最後組件,該路徑不是磁碟機說明的一部分。
樣本:
Debug.Print fso.GetFileName("c:/abc/test.txt")  '立即視窗顯示"test.txt"
8、GetFolder 方法
文法:object.GetFolder(folderspec)
作用:返回一個和指定路徑中檔案夾相對應的 Folder 對象。
樣本:
Dim fd
Set fd = fso.GetFolder("c:/windows")  '變數f就代表了檔案夾windows對象
注意:如果指定的檔案夾不存在,則發生一個錯誤。
9、GetSpecialFolder 方法
文法:object.GetSpecialFolder(folderspec)
作用:返回指定的特殊檔案夾。
說明:
folderspec 參數可為任何的下列值:
WindowsFolder   0   Windows 檔案夾,包含由 Windows 作業系統安裝的檔案。
SystemFolder   1   系統檔案夾,包含庫、字型、裝置驅動程式。
TemporaryFolder  2   Temp 檔案夾,用於儲存臨時檔案。它的路徑在 TMP 環境變數中。
10、GetParentFolderName 方法
文法:object.GetParentFolderName(path)
作用:返回一個包含指定路徑最後組件父資料夾名字的字串。
樣本:
Debug.Print fso.GetParentFolderName("c:/tmp/test.txt")  '顯示"c:/tmp"
11、GetTempName 方法
文法:object.GetTempName
作用:返回一個隨機產生的臨時檔案或檔案夾的名字,該名字在執行需要臨時檔案或檔案夾的操作時有用。
說明:GetTempName 方法不產生一個檔案,它僅提供一個臨時檔案名稱字,該名字可被 CreateTextFile 用於建立一個檔案。
樣本:
Debug.Print fso.GetTempName   '顯示"radB0208.tmp",每次都會變。
12、BuildPath 方法
文法:object.BuildPath(path, name)
作用:追加一個名字到一個已經存在的路徑。
樣本:
Debug.Print fso.BuildPath("c:/tmp", "abc") '顯示"c:/tmp/abc"
13、CreateFolder 方法
文法:object.CreateFolder(foldername)
作用:建立一個檔案夾。
注意:如果指定的檔案夾已經存在,則發生一個錯誤。
樣本:
fso.CreateFolder("c:/myfolder")   '在C盤建立一個myfolder檔案夾
14、CopyFolder 方法
文法:object.CopyFolder source, destination[, overwrite]
source 必需的。指明一個或多個被複製檔案夾的字串檔案夾說明,可以包括萬用字元。 
destination 必需的。指明 source 中被複製檔案夾和子檔案夾的接受端的字串,不允許有萬用字元。
overwrite 可選的。Boolean 值,它表示已存在的檔案夾是否被覆蓋。如果為 True,檔案被覆蓋。如果為 False,檔案不被覆蓋。預設值為 True。
作用:複製一個檔案夾到另一個地方。
說明:
 ① 萬用字元僅可用於 source 參數的最後一個路徑組件。
例如:fso.CopyFolder "c:/mydocuments/letters/*", "c:/tempfolder/" 這是可以的。
但不能這樣:fso.CopyFolder "c:/mydocuments/*/*", "c:/tempfolder/"
② 如果 source 包含萬用字元或 destination 以路徑分隔字元(/)為結尾,則認為 destination 是一個已存在的檔案夾,在其中複製相匹配的檔案夾和子檔案夾。否則認為 destination 是一個要建立的檔案夾的名字。
例如:fso.copyfolder "c:/tmp", "f:/abc/"
如果F盤沒有abc檔案夾,將發生錯誤。如果存在,可看到abc檔案夾裡有tmp檔案夾。
假如寫成這樣:fso.copyfolder "c:/tmp", "f:/abc"
此時若abc不存在,將建立abc檔案夾,且將tmp檔案夾裡的內容複寫到abc檔案夾裡,而不是tmp檔案夾,只有abc是一個已經存在的檔案夾時,才複製整個tmp檔案夾到abc檔案夾裡。
③如果 destination 是一個已存在的檔案,則發生一個錯誤。
④如果 destination 是一個目錄,它將嘗試複製檔案夾和它所有的內容。如果一個包含在 source 的檔案已在 destination 中存在,當 overwrite 為 False 時發生一個錯誤,否則它將嘗試覆蓋這個檔案。
⑤如果 destination 是一個唯讀目錄,當嘗試去複製一個已存在的唯讀檔案到此目錄並且 overwrite為 False 時,則發生一個錯誤。
⑥如果 source 不存在或使用的萬用字元不能和任何檔案夾匹配,也發生一個錯誤。
⑦CopyFolder 方法停止在它遇到的第一個錯誤上,之前所做的操作是不會消失的,所以要注意。
15、MoveFolder 方法
文法:object.MoveFolder source, destination
參數與CopyFolder的前兩個一樣。
作用:將一個或多個檔案夾從一個地方移動到另一個地方。
說明:
①只有在作業系統支援的情況下,這個方法才允許檔案夾在卷之間移動。Windows是不允許的,將C盤的檔案夾移到D盤是不行的。
②如果 source 包含萬用字元或 destination 以路徑分隔字元 (/)為結尾,則認為 destination 指定了一個已存在的檔案夾,在此檔案夾中移動相匹配的檔案。否則,認為 destination 是一個要建立的目標檔案夾名字。這點與CopyFolder是一樣的。
③如果 destination 是一個已存在的檔案,則發生一個錯誤。
④如果 destination 是一個目錄,則發生一個錯誤。
例如:
fso.movefolder "c:/tmp", "c:"  '發生錯誤。
⑤如果 source 不存在或使用的萬用字元不能和任何檔案夾匹配,也發生一個錯誤。
⑥MoveFolder 方法停止在它遇到的第一個錯誤上。不要嘗試回卷在錯誤發生前所做的任何改變。
16、DeleteFolder 方法
文法:object.DeleteFolder folderspec[, force]
folderspec 必需的。要刪除的檔案夾的名字。 Folderspec 可以在最後的路徑組件中包含萬用字元。
force 可選的。Boolean 值,如果要刪除具有唯讀屬性設定的檔案夾,其值為 True,如果值為 False (預設),則不能刪除具有唯讀屬性設定的檔案夾。
作用:刪除一個指定的檔案夾和它的內容。
說明:如果沒有發現相匹配的檔案夾,則發生一個錯誤。DeleteFolder 方法停止在它遇到的第一個錯誤上,不要嘗試回卷或撤消錯誤發生前所做的任何改變。
樣本:
fso.DeleteFolder("c:/tmp")
17、FolderExists 方法
文法:object.FolderExists(folderspec)
作用:如果指定的檔案夾存在返回 True,不存在返回 False。
18、DriveExists 方法
文法:object.DriveExists(drivespec)
作用:如果指定的磁碟機存在,返回 True,如果不存在返回 False。
19、FileExists 方法
文法:object.FileExists(filespec)
作用:如果指定的檔案存在,返回 True,若不存在,則返回 False。
20、CreateTextFile 方法
文法:object.CreateTextFile(filename[, overwrite[, unicode]])
overwrite 可選的。Boolean 值,表示一個已存在檔案是否可被覆蓋。如果可被覆蓋其值為 True,其值為 False 時不能覆蓋。如果它被省略,則已存在檔案不能覆蓋。
unicode 可選的。Boolean 值,表示檔案是作為一個 Unicode 檔案建立的還是作為一個ASCII 檔案建立的。如果作為一個 Unicode 檔案建立,其值為 True,作為一個 ASCII 檔案建立,其值為 False。如果省略的話,則認為是一個 ASCII 檔案。
作用:建立一個指定的檔案名稱並且返回一個用於該檔案讀寫的 TextStream 對象。
樣本:
Dim f
Set f = fso.CreateTextFile("c:/testfile.txt", True)
21、OpenTextFile 方法
文法:object.OpenTextFile(filename[, iomode[, create[, format]]])
作用:開啟一個指定的檔案並返回一個 TextStream 對象,該對象可用於對檔案進行讀、寫、追加操作。
說明:
·iomode 參數可為下面設定值中的任何值:
ForReading    1  開啟一個唯讀檔案,不能對此檔案進行寫操作。
ForWriting    2  開啟一個用於寫操作的檔案。如果和此檔案同名的檔案已存在,則覆蓋以前內容。
ForAppending    8  開啟一個檔案並寫到檔案的尾部。
注意:在VBA協助裡是沒有ForWriting的,其實是有的,VBA協助也是有錯誤的。另外,這些常數在使用前要先聲明,或者直接用數值。
·create 可選的,它表示如果指定的 filename 不存在是否可以建立一個新檔案。如果建立新檔案,其值為 True。若不建立檔案其值為 False。預設值為 False。
·Format 參數可為下面設定值中的任何值:
TristateUseDefault   –2   使用系統預設開啟檔案。
TristateTrue    –1   以 Unicode 格式開啟檔案。
TristateFalse      0   以 ASCII 格式開啟檔案。
樣本:
Dim f
Set f = fso.OpenTextFile("c:/testfile.txt", 2, True)
或者:
Const ForWriting = 2
Set f = fso.OpenTextFile("c:/testfile.txt", ForWriting, True)
這兩者功能是一樣的,一個聲明了常量,一個直接用數值。都是在C盤建立檔案testfile.txt(如不存在),或以寫的方式開啟(如存在)。
22、CopyFile 方法
文法:object.CopyFile source, destination[, overwrite]
作用:把一個或多個檔案從一個地方複製到另一個地方。
說明:需要注意的地方與CopyFolder是完全類似的。
樣本:
fso.copyfile "c:/testfile.txt", "f:/abc/"  '若abc不存在則出錯。
fso.copyfile "c:/testfile.txt", "f:/abc"  '若abc不存在則複製testfile.txt到F盤檔案名稱變為abc,若abc存在,出錯,因為是一個目錄。
23、MoveFile 方法
文法:object.MoveFile source, destination
作用:將一個或多個檔案從一個地方移動到另一個地方。
說明:需要注意的地方與MoveFolder是完全類似的。
24、DeleteFile 方法
文法:object.DeleteFile filespec[, force]
作用:刪除一個指定的檔案。
說明:force 可選的。如果要刪除具有唯讀屬性設定的檔案,其值為 True。如果其值為 False (預設),則不能刪除具有唯讀屬性設定的檔案。
(三)處理磁碟機
可以利用Drive對象來擷取有關各種磁碟機的資訊,Drive對象的屬性有:
TotalSize 屬性   磁碟機的總容量,以位元組為單位。
AvailableSpace 屬性  磁碟機的可用空間容量,以位元組為單位。
FreeSpace 屬性   磁碟機的剩餘空間容量,和 AvailableSpace 屬性是相同的。
    對於支援限額的電腦系統來說,二者之間可能有所不同。
DriveLetter 屬性  磁碟機字母,即盤符。
DriveType 屬性   磁碟機的類型。如"Removable"、"Fixed"、"Network"、"CD-ROM"、"RAM Disk"
SerialNumber 屬性  磁碟機的序號。
FileSystem 屬性   磁碟機所使用的檔案系統類型。如FAT、FAT32、NTFS、以及 CDFS。
IsReady 屬性   磁碟機是否可用。
ShareName 屬性   磁碟機的網際網路共用名。
VolumeName 屬性   磁碟機的卷標名。
Path 屬性   磁碟機的路徑。C 磁碟機的路徑是 C:,而不是 C:/。
RootFolder 屬性   定磁碟機的根資料夾。C 磁碟機的根資料夾是 C:/。
這些屬性的使用都十分簡單,直接用“對象.屬性”就可以了。在使用前要先用GetDrive獲得一個Drive對象,注意不能建立一個磁碟機對象。下面舉個例子:
Sub ShowFreeSpace(drvPath)
    Dim fs, d, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set d = fs.Getdrive(fs.GetDriveName(drvPath))
    s = "Drive " & UCase(drvPath) & "-"
    s = s & d.VolumeName & vbCrLf
    s = s & "Free Space: " & FormatNumber(d.FreeSpace / 1024, 0)
    s = s & " Kbytes"
    MsgBox s
End Sub
利用Call ShowFreeSpace("c:"),即可獲得C盤的卷標名和可用空間。
(四)處理檔案夾
1、擷取檔案夾的資訊
可以利用Folder對象來擷取有關檔案夾的資訊,Folder對象的屬性有:
Attributes 屬性   檔案夾的屬性。可為下列值中的任意一個或任意的邏輯組合:
    Normal   0  一般檔案。未設定屬性。
    ReadOnly  1  唯讀檔案。屬性為讀/寫。
    Hidden   2  隱藏檔案。屬性為讀/寫。
    System   4  系統檔案。屬性為讀/寫。
    Volume   8  磁碟機卷標。屬性為唯讀。
    Directory  16  檔案夾或目錄。屬性為唯讀。
    Archive  32  自上次備份後已經改變的檔案。屬性為讀/寫。
    Alias   64  連結或捷徑。屬性為唯讀。
    Compressed  128  壓縮檔。屬性為唯讀。
Name 屬性   檔案夾名字。
ShortName 屬性   較早的 8.3 命名規範的程式所使用的短名字。
Type 屬性   檔案夾類型。
Files 屬性   所有 File 對象組成的 Files 集合,這些 File 對象包含在指定的檔案夾中
    ──包括設定了隱藏和系統檔案屬性的那些檔案。
Drive 屬性   檔案夾所在的磁碟機符號。
IsRootFolder 屬性  檔案夾是否是根資料夾。
ParentFolder 屬性  檔案夾的父資料夾對象。
SubFolders 屬性   檔案夾的子檔案夾集合。
Path 屬性   檔案夾的路徑。
ShortPath 屬性   較早的 8.3 檔案命名規範的程式所使用的短路徑。
Size 屬性   檔案夾的大小,以位元組為單位。
DateCreated 屬性  檔案夾的建立日期和時間。
DateLastModified 屬性  最後一次修改檔案夾的日期和時間。
DateLastAccessed 屬性  最後一次訪問檔案夾的日期和時間。
屬性的使用和Drive對象是一樣的,可以用GetFolder擷取一個Folder對象,也可以用FileSystemObject對象的CreateFolder 方法建立一個Folder對象。
2、Folder對象的方法
⑴Copy 方法
文法:object.Copy destination[, overwrite]
作用:把一個指定的檔案夾從一個地方複製到另一個地方。
說明:Copy 方法的作用與FileSystemObject對象的CopyFolder 方法是一樣的,不同在於後者可一次複製多個檔案夾。
⑵Move 方法
文法:object.Move destination
作用:將一個指定的檔案夾從一個地方移動到另一個地方。
說明:Move 方法的作用與FileSystemObject.MoveFolder 是一樣的。不同在於後者可一次移動多個檔案夾。
⑶Delete 方法
文法:object.Delete force
作用:刪除一個指定的檔案夾。
說明:Delete 方法的作用與FileSystemObject.DeleteFolder 是一樣的。
⑷CreateTextFile 方法
文法:object.CreateTextFile(filename[, overwrite[, unicode]])
作用:與FileSystemObject對象的CreateTextFile 方法是一樣的。
樣本:
    Set fd = fs.getfolder("c:/tmp")
    Set f = fd.CreateTextFile("testfile.txt", True)
可在C盤tmp檔案夾下建立testfile.txt檔案。
(五)處理檔案
1、擷取檔案的資訊
可以利用File對象來擷取有關檔案的資訊,File對象的屬性和Folder的屬性是完全一樣的,只是少了Files 屬性、IsRootFolder 屬性、SubFolders 屬性這3個屬性。這裡就不列了。
2、File對象的方法
⑴Copy 方法
⑵Move 方法
⑶Delete 方法
以上三種方法與Folder的是完全類似的,文法也一樣,同樣也可用FileSystemObject對象相應的方法代替。
⑷OpenAsTextStream 方法
文法:object.OpenAsTextStream([iomode, [format]])
作用:開啟一個指定的檔案並返回一個 TextStream 對象,該對象可用來對檔案進行讀、寫、追加操作。
說明:此方法與FileSystemObject對象的 OpenTextFile 方法相同的功能。參數也是一致的。
(六)處理文字檔
1、開啟或建立文字檔
開啟現有的文字檔,可以使用FileSystemObject對象的 OpenTextFile 方法或File對象的OpenAsTextStream 方法。
建立檔案可以使用FileSystemObject對象的 CreatTextFile 方法或在OpenTextFile 方法中將iomode參數設為ForWriting=2,create參數設為True。
例如:
Set f = fso.OpenTextFile("c:/test1.xls", 2, True)  '如果不存在test1.xls將自動建立。
2、讀取檔案
開啟檔案後,將返回一個TextStream 對象,我們可以利用TextStream 對象的屬性及方法來對檔案進行讀寫操作。
先看TextStream 對象的幾個屬性。
·AtEndOfLine 屬性  檔案指標是否正好在行尾標記的前面
·AtEndOfStream 屬性  檔案指標是否在 TextStream 檔案末尾
·Column 屬性   TextStream 檔案中當前字元位置的列號
·Line 屬性   TextStream 檔案中的當前行號
利用TextStream 對象讀取檔案有三種方法。
·Read 方法
文法:object.Read(characters)
功能:從一個 TextStream 檔案中讀取指定數量的字元並返回得到的字串。
樣本:
Sub du()
Dim fso, a, retstring
Const ForReading = 1
Set fso = CreateObject("Scripting.FileSystemObject")
Set a = fso.OpenTextFile("c:/testfile.txt", ForReading, False)
Do While a.AtEndOfLine <> True   '是否到行末
    retstring = retstring & a.Read(1)  '讀取一個字元
Loop
a.Close
Debug.Print retstring    '可看到讀取了第一行的字元
End Sub
·ReadLine 方法
文法:object.ReadLine
功能:從一個 TextStream 檔案讀取一整行(到分行符號但不包括分行符號)並返回得到的字串。
樣本:
Sub du_line()
Dim fso, a, retstring
Const ForReading = 1
Set fso = CreateObject("Scripting.FileSystemObject")
Set a = fso.OpenTextFile("c:/testfile.txt", ForReading, False)
Do While a.AtEndOfStream <> True  '是否在 TextStream 檔案末尾
    retstring = a.ReadLine   '讀取一行
    Debug.Print retstring   '顯示在立即視窗
Loop
a.Close
End Sub
·ReadAll 方法
文法:object.ReadAll
功能:讀取整個的 TextStream 檔案並返回得到的字串。
說明:對於大的檔案,使用ReadAll方法浪費記憶體資源。應使用其它的技術去輸入一個檔案,比如按行讀取檔案。
樣本:
Sub du_all()
Dim fso, a, retstring
Const ForReading = 1
Set fso = CreateObject("Scripting.FileSystemObject")
Set a = fso.OpenTextFile("c:/testfile.txt", ForReading, False)
retstring = a.Readall   '全部讀取
Debug.Print retstring
a.Close
End Sub
還有兩個輔助讀取的方法:
·Skip 方法
文法:object.Skip(characters)
功能:當讀一個 TextStream 檔案時跳過指定數量的字元。
樣本:
Sub duskip()
Dim fso, a, retstring
Const ForReading = 1
Set fso = CreateObject("Scripting.FileSystemObject")
Set a = fso.OpenTextFile("c:/testfile.txt", ForReading, False)
Do While a.AtEndOfLine <> True           '是否到行末
    retstring = retstring & a.Read(1)       '讀取一個字元
    a.Skip (1)     '跳過一個字元
Loop
a.Close
Debug.Print retstring                 '可看到讀取了第一行的奇數位的字元
End Sub
·SkipLine 方法
文法:object.SkipLine
功能:當讀一個 TextStream 檔案時跳過下一行。
3、寫入資料到檔案
寫入資料到檔案也有三種方法。
·Write 方法
文法:object.Write(string)
功能:寫一個指定的字串到一個 TextStream 檔案。
樣本:
Sub xie()
    Const ForWriting = 2, ForAppending = 8
    Dim fs, f
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.OpenTextFile("c:/testfile.txt", ForAppending,TristateFalse)
    f.Write "Hello world!"  '寫入字串
    f.Close
End Sub
·WriteLine 方法
文法:object.WriteLine([string])
功能:寫入一個指定的字串和分行符號到一個 TextStream 檔案中。
樣本:
f.WriteLine("Hello world!")  '寫入字串,加一個分行符號。
·WriteBlankLines 方法
文法:object.WriteBlankLines(lines)
功能:寫入指定數量的分行符號到一個 TextStream 檔案中。
樣本:
f.WriteBlankLines(3)   '相當於按3次斷行符號。
4、關閉檔案
利用TextStream 對象的Close方法,上面的樣本中已經有了,很簡單。
(七)總結
    從上面的介紹,我們看到使用FileSystemObject對象處理檔案、檔案夾比使用VBA語句的方法具有更容易存在的特點。這是因為FileSystemObject對象使用了物件導向的文法。另外FileSystemObject對象處理文字檔毫不遜色於VBA語句,非常值得推薦。唯一的問題是不能處理二進位檔案,微軟在有關文檔中稱計劃將來支援二進位檔案,不過應該只是計劃而已,呵呵。