乐于分享
好东西不私藏

Excel VBA 编程基础 -- 现代文件处理(七)

Excel VBA 编程基础 -- 现代文件处理(七)
TextStream
TextStream 对象属于 FileSystemOject 对象系统的一部分,用于文本文件的读写操作。
TextStream 的属性列表如下:
表1 TextStream 对象的属性列表
TextStream 对象的方法如下表所示:
表2 TextStream 对象的方法列表
下面逐一讨论 TextStream 的各个方法。
TextStream.Close
一般格式是:
TextStream.Close
关闭已打开的 TextStream 文件。
TextStream.Read
从 TextStream 文件中读取指定数量的字符,并返回读取结果。
一般格式是:
TextStream.Read(numberOfCharacters)
其中,numberOfCharacters 参数指定要读取的字符数。
TextStream.ReadAll
读取整个 TextStream 文件,并返回读取结果。
一般格式是:
TextStream.ReadAll
注:ReadAll 适合于读取小型文件,对于大型文件,使用 ReadAll 并不是经济的做法,一般是逐行读取大型文件。
TextStream.ReadLine
从 TextStream 文件中读取一行,并返回读取结果。
一般格式是:
TextStream.ReadLine
注:ReadLine 读取一行,但返回的结果中并不包括换行符,换行符被丢弃。
TextStream.Skip
在读取 TextStream 过程中,跳过指定数量的字符。
一般格式是:
TextStream.Skip(numberOfCharacters)
其中,numberOfCharacters 指定要跳过的字符数量。
注:“跳过指定数量的字符”的意思是读入指定数量的字符并丢弃。
TextStream.SkipLine
在读取 TextStream 文件过程中,跳过下面的行。
一般格式是:
TextStream.SkipLine
注:“跳过下面的行”的意思是:从文件指针指向的位置开始读,一直读到换行符(读入换行符),然后将读入的内容丢弃。
TextStream.Write
向 TextStream 文件写入指定的字符串。
一般格式是:
TextStream.Write(string)
其中,string 表示要写入 TextStream 文件的字符串。
注:Write 向 TextStream 文件中忠实写入指定的字符串,不添加任何额外内容。
TextStream.WriteBlankLines
向 TextStream 写入指定数量的换行符。
一般格式是:
TextStream.WriteBlankLines(numberOfLines)
其中,numberOfLines 表示向 TextStream 文件写入的换行符数量。
TextStream.WriteLine
向 TextStream 文件写入指定的字符串,并附加一个换行符。
一般格式是:
TextStream.WriteLine([ string ])
其中,可选参数 string 表示向文件写入的字符串。如果省略 string 参数,则向文件写入一个换行符。
因此,下面的两条 Write 语句是等价的:
Dim ts As TextStreamSet ts = ...ts.WriteBlankLines(1)   ' Write a blank linets.WriteLine            ' Write a blank line
由上面的介绍可以看出,TextStream 对象比较简单。下面看例子。
例1. TextStream 用法示例
图1 TextStream 对象用法示例
在这个例子中,首先通过 FSO.GetFile 得到 File 对象,然后通过 File.OpenAsTextStream 方法得到一个只写的 TextStream 对象。接下来就是向文件写入内容。Write 写入一个字符串,但仅写入指定的字符串,然后用 WriteBlankLines 写入三个换行符(注:此时已经向文件中写入了三行!),然后是两个 WriteLine,向文件中写入两行内容。最后用 Close 关闭文件。
接下来用 File.OpenAsTextStream 打开一个只读的 TextStream,然后用一个 While ... Wend 循环读入文件所有内容。While 循环的终止条件是 AtEndOfStream 返回 True,说明已到达文件尾。进入循环体,首先是 Debug.Print 打印语句,该语句的参数是一个字符串组合表达式,首先是用 Line 属性获取当前行号,然后是分隔符,接着是用 ReadLine 读取并返回下一行。接着是一个 If ... End If 语句,判断当前是否已处于文件尾,如果不在文件尾,则使用 SkipLine 跳过下一行。
所以,整个读取段的功能是:读取并打印文件中的奇数行。这从立即窗口中的输出结果就可以看出来。
下面是 ut.txt 的完整内容:
图2 ut.txt
从图2 可以看出,Hello 下面有两个空行。而在图1 的代码中,我们使用了 WriteBlankLines(3) 向文件中写入了三个换行符,为什么 Hello 后面只有两个空行呢?
相关阅读
Excel VBA 编程基础 -- 现代文件处理(一)
Excel VBA 编程基础 -- 现代文件处理(二)
Excel VBA 编程基础 -- 现代文件处理(三)
Excel VBA 编程基础 -- 现代文件处理(四)
Excel VBA 编程基础 -- 现代文件处理(五)
Excel VBA 编程基础 -- 现代文件处理(六)