Const ForReading = 1
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\scripts\test.txt", ForReading)
strFile = objFile.ReadAll
objFile.Close
intLength = Len(strFile)
strEnd = Right(strFile, 2)
If strEnd = vbCrLf Then
strFile = Left(strFile, intLength - 2)
Set objFile = objFSO.OpenTextFile("C:\scripts\test.txt", ForWriting)
objFile.Write strFile
objFile.Close
End If
我們一開始先指定一組常數 (ForReading 與 ForWriting),這在處理文字檔時會用到。接著建立一個 FileSystemObject 的執行個體,並使用 OpenTextFile 方法來開啟 C:\Scripts\Test.txt 檔案。然後再使用 ReadAll 方法來讀取文字檔中全部的內容,並且將該資訊儲存於一個名為 strFile 的變數中。之後馬上關閉文字檔 (為什麼呢?因為 FileSystemObject 只允許開啟一個檔案進行讀取或寫入動作。由於我們必須讀取檔案,因此一定要開啟檔案;如果稍後有需要修改該檔案,也需要重新將之開啟來寫入。既然讀完檔案了,乾脆就把它關閉)。
接下來我們使用 Len 函式來決定 strFile 變數的長度 (也就是說,字串中有幾個字元)。此值 (等一下會用到) 是儲存於 intLength 變數中。
到目前為止都沒問題吧?現在我們需要決定現有的檔案在結尾處是否有復位換行。跟之前提過的一樣,這表示要檢查看看檔案中最後 2 個字元是否包含一個換行字元與一個換行鍵。因此我們使用 Right 函式來抓取該字串最後面的兩個字元,然後將之儲存到 strEnd 變數中。這就是我們在這行程式碼所做的:
strEnd = Right(strFile, 2)
接下來我們可以檢查看 strEnd 是否等於 vbCrLf。如果是,就使用這一行程式碼來抓取除了最後的兩個字元以外的所有字元:
strFile = Left(strFile, intLength - 2)
記得我們使用 Len 函式來決定字串中有幾個字元嗎?我們現在就用該值來取得第一個「長度 – 2」個字元;例如,假設字串有 37 個字元,我們只會取得最初的 35 (37 – 2) 個。那可以有效地砍除字串尾端的復位換行。
我們接著重新開啟文字檔 (這一次是為了寫入),然後以新的字串值替換現有的內容。得到的結果是原始的文字檔,減去行尾復位換行。而這不正就是您要的嗎! |