Excel VBA 编程基础 -- 现代文件处理(六)
- 2026-11-09 20:34:31
Excel VBA 编程基础 -- 现代文件处理(六)前面我们已经讨论过 FileSystemObject、Folder 和 File 对象对文件夹和文件的操作,从今天开始我们讨论对文件的读写以及用于文件读写的 TextStream 对象。 创建文件 FSO.CreateTextFile 方法可以用来创建文本文件。一般格式是: FSO.CreateFile(filename[, overwrite [, unicode ]]) 其中,filename 指定要创建的文件名。可选 Boolean 类型参数 overwrite 表示覆盖已存在的同名文件,False 表示不覆盖,True 或 省略表示覆盖同名文件。可选 Boolean 类型参数 unicode 表示创建的文件是否以 Unicode 编码,True 表示使用 Unicode 编码表示文件内容,False 或省略则表示使用 ASCII 编码表示文件内容。 例1. FSO.CreateTextFile 用法示例 
图1 FSO.CreateTextFile 用法示例 本示例创建了两个文本文件,以 ASCII 编码的 at.txt,和以 Unicode 编码的 ut.txt。如下图所示: 
图2 at.txt 和 ut.txt 由图2 可见,at.txt 文件大小是 15 个字节,ut.txt 文件则是 24 个字节。同样的内容,因为使用的编码不同,文件大小也就不一样。 由下面的十六进制导出可以看到,at.txt 是以单字节和双字节混合编码表示的。其中的单字节编码表示 Hello, 和一个空格,共 7 个字符,占用 7 字节。双字节编码表示 早上好! 4 个字符,占用 8 个字节。所以,at.txt 总共占用 7 + 8 = 15 字节。 对于 ut.txt,因为使用了 Unicode 编码,所以所有字符都以双字节表示,7 个英文字符加4个中文字符共占用 (7 + 4) * 2 = 22 字节。另外,文件开头的 2 个字节 FF FE 表示这是一个 UTF-16LE 编码(&HFFFE 是 UTF-16LE 的标志)。所以,ut.txt 文件总共占用 22 + 2 = 24 字节。 例2. FSO.CreateTextFile 用法示例 
图3 FSO.CreateTextFile 用法示例 由这个例子可以看出,在 overwrite 参数为 False 且文件已存在的情况下,FSO.CreateTextFile 报“文件已存在”错误。 这说明 FSO.CreateTextFile 方法忠实地履行了方法名称所表示的功能:该方法是用来创建文件的,而不是用来修改文件的。要修改已存在的文件,则需要使用 File.OpenAsTextStream 方法。 File.OpenAsTextStream FIle.OpenAsTextStream 方法打开指定的文件,返回 TextStream 对象,以便对文件进行读、写、追加等操作。 一般格式是: File.OpenAsTextStream([ iomode [, format ]]) 其中,可选参数 iomode 表示输入/输出方向,可选参数 format 表示以何种编码方式打开文件,如果省略,则以 ASCII 编码方式打开文件。 iomode 的取值列表如下: 
表1 iomode 注:上表中,以只读方式打开的文件不可写入,以只写/附加方式打开的文件不可读取。 format 的取值如下表所示: 
表2 format 因为文本文件涉及到字符以何种编码表示,因此,FSO.CreateTextFile 和 File.OpenAsTextStream 都提供了控制编码方式的参数。 例1. File.OpenAsTextStream 用法示例 
图4 File.OpenAsTextStream 用法示例 在本例中,打开 at.txt 文件时,没有指定 format 参数,表示以 ASCII 编码打开,因为 iomode 指定了 ForWriting,所以 at.txt 文件的原有内容被清除,然后写上新的内容。 打开 ut.txt 时,iomode 参数使用 ForAppending,表示向文件追加内容,另外,format 参数使用 TriStateTrue,表示使用 Unicode 编码方式打开。 这个例子执行以后,at.txt 和 ut.txt 的结果如下: 
图5 at.txt 和 ut.txt at.txt 文件有 6 个字节,表示 at.txt 原来的内容已被清除,只有新写入的“你好!”三个字符,每个字符占用 2 字节,共 6 字节。 ut.txt 文件有 30 个字节,原来的内容被保留,新增加了“你好!”三个字符,每个字符占用 2 字节,共 24 + 3 * 2 = 30 字节。 相关阅读 Excel VBA 编程基础 -- 现代文件处理(一) Excel VBA 编程基础 -- 现代文件处理(二) Excel VBA 编程基础 -- 现代文件处理(三) Excel VBA 编程基础 -- 现代文件处理(四) Excel VBA 编程基础 -- 现代文件处理(五)







本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。