VBA调用外部对象02:FileSystemObject——操作文本文件

时间:2022-07-22
本文章向大家介绍VBA调用外部对象02:FileSystemObject——操作文本文件,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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。