1、写入:
FileSystemObjectc操作文本文件是通过OpenTextFile的函数,它能够返回一个TextStream对象,TextStream对象封装好了对文本文档的一些常用的操作,让我们试试如何来写入一个文本文档:
Sub TestFSOWrite()
Dim fso As FileSystemObject
'创建对象
Set fso = New FileSystemObject
Dim ts As TextStream
'创建TextStream,并使用IOMode ForWriting即只读模式,Create = True, 文件不存在的时候会自动创建
Set ts = fso.OpenTextFile(ThisWorkbook.path & "\test.txt", ForAppending, True)
'写入
ts.Write "test"
'关闭
ts.Close
Set ts = Nothing
Set fso = Nothing
End Sub
前面说到过,这种封装好了的对象,一般使用步骤都是定义对象变量-创建对象-使用对象的方法、属性等。上面就是首先创建FileSystemObject对象,然后调用FileSystemObject对象的函数OpenTextFile创建TextStream对象,再使用TextStream对象的Write方法写入文本。
相对于文件操作——写入里介绍的打开Open-写入Put-关闭Close三步,使用起来更好理解。
我们是使用TextStream这个对象来操作文本文档的,那么,我们可以直接用New关键字来创建它吗?如果你尝试过了,应该发现这是做不到的,如果接触到了类模块,我们会发现类模块里有一个属性叫做Instancing,默认是1-Private,还有1个是2-PublicNotCreatable(字面理解:公开但是不能被创建),我们可以理解TextStream就是类似类模块Instancing属性设置成了2-PublicNotCreatable。
2、读取:
和读取也是差不多,定义对象变量-创建对象-使用对象的方法、属性:
Sub TestFSORead()
Dim fso As FileSystemObject
'创建对象
Set fso = New FileSystemObject
Dim ts As TextStream
'创建TextStream,并使用IOMode ForWriting即只读模式,Create = True, 文件不存在的时候会自动创建
Set ts = fso.OpenTextFile(ThisWorkbook.path & "\test.txt")
Dim str As String
str = ts.Read(2)
Debug.Print str
'关闭
ts.Close
Set ts = Nothing
Set fso = Nothing
End Sub
OpenTextFile后面的参数都可以省略,我们使用Read方法读取2个字符,在立即窗口中你应该能够看到输出te。