FSO對象操作txt文件
在我們日常使用Excel的時候,不僅會用到當前Excel文件的數據,還經常需要訪問其他的數據文件。比如這節課要講的txt文本文件。
操作txt除了常規VBA文件處理語句open、write等方法,還有一種方法是使用FSO對象來操作。
那麼什麼是FSO對象呢?
?FileSystemObject文件系統對象簡稱FSO,和字典一樣,FSO也在Scripting 類型庫 (Scrrun.Dll)中,FSO對象同時包含了Drive、Folder、File、FileSystem Object和TextStream五個對象,在VBA中對FSO對象下的驅動器、文件夾、文件的讀取,寫入、新建、複製、移動、刪除等操作。讓excel VBA的功能更加的強大。
這節課我們介紹FSO對象中操作TXT文本文件(TextStream文本流)的一些方法
1.引用FSO
因為FSO和字典一樣,也在Scripting 類型庫 (Scrrun.Dll)中,不屬於VBA的範疇,使用之前我們需要引用。
?FSO對象引用的方法:
前期綁定:先要引用類庫文件scrrun.dll,工具?引用?勾選「Microsoft Scripting Runtime」,寫代碼的時候有智能提示。如果程序發給別人用,就要用後期綁定方式。
Dim fso As New Scripting.FileSystemObject
後期綁定:不需要引用類庫文件,但沒有智能提示。
Set fso = CreateObject("Scripting.FileSystemObject")
2.FSO創建、打開txt的方法
?CreatTextFile方法
CreatTextFile語法:object.CreateTextFile(filename[, overwrite[, unicode]])。
filename:要創建的文件的全路徑,字元串。
overwrite:Bool值,如果相同路徑存在同名文件,是否覆蓋。
unicode:Bool值,用什麼編碼寫入文件,默認是ASCII(true),也可以是unicode
CreatTextFile方法返回值是TextStream文本流類型對象,也就是本文的另一個重點,文本流。
?關於文本流
1.本文標題雖然是FSO,但讀取和寫入文件實際使用的都是TextStream的對象。
2.文本流有幾個不同的讀取和寫入方法(如上所述要注意和流的類型相匹配,否則會在運行時報錯)。
3、文本流還有一些實用的屬性。
AtEndOfLine: 文件指針正好在行尾標記,則返回TRUE
AtEndOfStream: 文件指針在文件末尾,則返回TRUE
Line: 返回一個 TextStream 文件中的當前行號。
Column: 返回 TextStream 文件中當前字元位置的列號。
CreateTextFile方法代碼示例:
Sub test()
Dim fso As ObjectDim fstxt As ObjectSet fso = CreateObject("Scripting.FileSystemObject")後期綁定Set fstxt = fso.CreateTextFile("d: est.txt", True)用FSO對象創建一個文本流用於寫入內容fstxt.WriteLine (Now) 用文本流的WriteLine方法,把本機的時間寫入文件。fstxt.Close Colse方法關閉流。End Sub
?使用OpenTextFile方法
這個方法的功能很多,可以讀、寫、追加寫入。如果目標文件不存在還可以根據需求創建文件。OpenTextFile方法方法返回值也是TextStream文本流類型對象。
語法:object.OpenTextFile(filename[, iomode[, create[, format]]])
filename:要創建的文件的全路徑,字元串。
iomode:常數。ForReading讀取、ForWriting寫入,ForAppending在文件末尾追加寫入
create:Bool值,如果文件不存在,是否創建。 默認是False不創建。
format:以什麼編碼形式打開文件
OpenTextFile方法代碼示例:
Sub OpenTextAndWriteRead()
Dim fso As ObjectDim rfsm As ObjectDim wfsm As ObjectDim str As String
Set fso = CreateObject("Scripting.FileSystemObject") 後期綁定 創建一個流用來寫入Set wfsm = fso.OpenTextFile("d: est.txt", forappending) n = 1 Do wfsm.WriteLine ("第" & n & "行:" & Now) n = n + 1 Loop Until n = 11wfsm.Close 關閉文本流 打開一個流用來讀取Set rfsm = fso.OpenTextFile("d: est.txt", 1)Dostr = rfsm.ReadLine
Debug.Print str Loop Until rfsm.AtEndOfLine 判斷是否到了末尾行號rfsm.CloseEnd Sub
從以上代碼可以看到,OpenTextFile方法不僅可以打開txt文件,在沒有txt文件的時候,還能自動創建。因此OpenTextFile方法比CreateTextFile方法更強大。
好了,FSO對象操作txt文本文件的基礎知識就分享到這裡,具體FSO實例,我們下節課在講解。
歡迎收藏、點贊、轉發。
更多文章見微信公眾號:每天學點excelvba(ID:todayvba)
往期回顧
1丨Split函數應用|分離商品和數量
2丨批處理|批量將EXCEL轉為PDF
3丨VBA工作表事件實現「聚光燈效果」
推薦閱讀:
※利用Excel一鍵獲取功效矩陣氣泡圖的奧秘
※Excel+VBA製作小遊戲:翻卡牌
※一張圖教你用VBA自定義排序
※PowerPoint怎樣用VBA?
TAG:VBA | 別怕,ExcelVBA其實很簡單書籍 |