。
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:\test.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:\test.txt", forappending)
n = 1
Do
wfsm.WriteLine ("第" & n & "行:" & Now)
n = n + 1 Loop Until n = 11
wfsm.Close'关闭文本流
'打开一个流用来读取
Set rfsm = fso.OpenTextFile("d:\test.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实例,我们下节课在讲解。
欢迎收藏、点赞、转发。
领取专属 10元无门槛券
私享最新 技术干货