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 Object

Dim fstxt As Object

Set 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 Object

Dim rfsm As ObjectDim wfsm As Object

Dim 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 = 11

wfsm.Close 關閉文本流 打開一個流用來讀取

Set rfsm = fso.OpenTextFile("d: est.txt", 1)

Do

str = rfsm.ReadLine

Debug.Print str

Loop Until rfsm.AtEndOfLine 判斷是否到了末尾行號

rfsm.Close

End 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其實很簡單書籍 |