VBA----FileSystemObject

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

在VBA中有时会需要操作一些普通文件和文件夹。存在着很多操作的方法。这里介绍一种较为全面且简单的操作方法。FileSystemObject ---- 文件系统对象。


一、创建FileSystemObject对象

FileSystemObject对象位于Scripting脚本内,定位于

C:\Windows\SysWOW64\scrrun.dll

后期绑定:

Set fso = CreateObject("Scripting.FileSystemObject")

二、使用FileSystemObject操作文件

1.打开文件:OpentTextFile()方法

调用FileSystemObject.OpentTextFile()方法将打开指定的文件,并返回该文件的TextStream(文本流)对象,对象浏览器中写的介绍是:

Function OpenTextFile(FileName As String, [IOMode As IOMode = ForReading], [Create As Boolean = False], [Format As Tristate = TristateFalse]) As TextStream

FileName: 要打开的文件地址。
IOMode:它的同名值IOMode是一个枚举类型对象,代表打开文件的模式。其中:

Const ForReading = 1 // 只读模式
Const ForWriting = 2 // 只写模式,每次以此模式打开后原来的文件都将被新文件完全覆盖。
Const ForAppending = 8 // 可读 + 可续写模式。

Create:文件不存在时是否自动按照所给文件地址创建新文件。默认为false = 否。
Format:它的值Tristate也是枚举对象。指定打开文件时所使用的字符集。有:

Const TristateUseDefault = -2 // 使用系统默认值打开文件。
Const TristateTrue = -1 // 打开该文件为 Unicode。
Const TristateFalse = 0 // 打开该文件为 ASCII。

2.创建文件:CreateTextFile()方法

调用FileSystemObject.CreateTextFile()方法将创建指定的文件,并返回该文件的TextStream(文本流)对象,对象浏览器中写的介绍是:

Function CreateTextFile(FileName As String, [Overwrite As Boolean = True], [Unicode As Boolean = False]) As TextStream

FileName: 要创建的文件地址。
Overwrite:若文件已存在是否覆盖的选项。默认为true = 覆盖已存在文件。
Unicode:创建文件时使用unicode还是ASCII字符集。默认为false = 使用ASCII字符集;true = 使用unicode字符集。

3.操作文本流(TextStream)

使用FileSystemObject操作文件,最终以操作文本流对象(TextStream)的形式实现。

(1).文件指针

TextStream提供一个只读的文件指针,供使用者判断当前文件读取的位置。无论之前对文件进行什么读写操作,对于新打开的文件,文件指针都位于第一个字符前(这将导致始终从第一个字符开始读取),即Column = 1; Line = 1。

TextStream提供了四个只读属性,我们可以通过这四个只读属性很方便的判断文件指针的状态:
Column:返回 TextStream 文件中当前的列号。
Line:返回 TextStream 文件中当前的行号。
AtEndOfLine:如果文件指针紧接在 TextStream 文件的行尾标记(即换行符)之前,则返回 true;否则返回 false。
AtEndOfStream:如果文件指针位于 TextStream 文件的末尾(文件末尾是不存在任何隐藏符号的),则返回 true;否则返回 false。

TextStream提供了两个过程(Sub)来操作文件指针(只能从前往后):

Sub Skip(Characters As Long)  //  在读取模式下,文件指针跳过指定数量的字符。(即跳过Characters个字符)
Sub SkipLine()  //  在读取模式下,文件指针跳到下一行开头。

通过跳过字符的方式,可以实现单向的移动文件指针。当然,单纯的读取操作,也会单向移动文件指针,这取决于你的需求。

(2).读取文件内容

想要能够读取文件的内容必须以ForReading的模式打开(ForWriting和ForAppending都不行)。这里再重申一遍,每次打开文件,都将从头开始读取。
TextStream提供了三个方法读取文件:

Function Read(Characters As Long) As String  //  读取指定数量的字符并返回结果字符串。
Function ReadLine() As String  //  读取一行并返回结果字符串。
Function ReadAll() As String  //  读取整个文件并返回结果字符串。

(3).写入文件内容

想要写入内容,必须以ForWriting 或 ForAppending的模式打开文件。在这两种模式下写入相同的内容将产生不同的效果。
ForWriting:先清空文件中原有的所有内容,在重新写入指定的内容。相当于用新文件替换了旧文件。文件指针位于文件开头。
ForAppending:从文件的末尾开始写入内容。文件指针位于文件末尾。由于无法前移文件指针,在这个模式下仍然不支持文件指针的自主移动。只能始终处于文件末尾。

因为在这两种写模式下,文件指针始终处于文件末尾。因此,四个只读属性中AtEndOfLine,AtEndOfStream将不再具有获取的意义,将无法获得值。而Line和Column则可以正常获得值。

TextStream提供了三个过程(Sub)来向文件中写入内容:

Sub Write(Text As String)  //  将指定的文本(Text)写入文件
Sub WriteBlankLines(Lines As Long)  //  将指定数量的换行字符写入文件。(即写入Lines个换行符或者说写入Lines个空行)
Sub WriteLine([Text As String])  //  将指定的文本,在末尾加上一个换行符后写入文件。
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值