Excel VBA编程  文件操作
文件的操作主要有新建、打开、删除、复制等。这些操作可使用FileSystemObject对象的方法来实现,也可以使用File对象的方法来实现。如果要向文本文件中添加内容,则需要使用TextStream对象的相应方法。
通常对文本文件的操作包括在文本文件中创建数据,在文本文件中添加数据,删除文本文件的数据等操作。这些操作都可以通过File对象和FileSystemObject对象的相关方法完成。
1.创建文本文件
在使用FSO对象之前,首先要创建一个文本文件。创建文本文件需要用到FSO的CreateTextFile方法。
格式:
object.CreateTextFile(filename[, overwrite[, unicode]])
其个部分的意义如表18-4所示。
表18-4  CreateTextFile方法
对象
描述
object
必需的。FileSystemObject 或 Folder 对象名。
filename
必需的。字符串表达式,它标识创建的文件。
overwrite
可选的。Boolean值,表示一个已存在文件是否可被覆盖。如果可被覆盖其值为 True。当值为 False 时不能覆盖。如果它被省略,则已存在文件不能覆盖。
unicode
可选的。Boolean 值,表示文件是作为一个Unicode文件创建的还是作为一个ASCII文件创建的。如果作为一个Unicode文件创建,其值为True,作为一个ASCII文件创建,其值为False。如果省略的话,则认为是一个ASCII文件。
例如,在D盘下创建一个名为Test的文本文件,代码如下:
Sub 创建文本()
    '定义FileSystemObject对象
    Dim fso As New FileSystemObject, fil
    '创建Test文本文件
    Set fil = fso.CreateTextFile("D:\", True)
End Sub
2.打开文本文件
打开文本文件有两种方法,即OpenTextFile方法和OpenAsTextStream方法。
OpenTextFile方法
该方法可以用于对文件进行读操作或追加操作。
格式:
object.OpenTextFile(filename[, iomode[, create[, format]]])
其个部分的意义如表18-5所示。
表18-5  OpenTextFile方法
对象
描述
Object
必需的。始终是一个FileSystemObject的名字。
filename
必需的。字符串表达式,它标识了打开的文件。
iomode
可选的。表示输入/输出方式。可为两个常数之一:ForReading或 ForAppending。其中ForReading表示打开一个只读文件。不能对此文件进行写操作;
ForAppending表示打开一个文件并写到文件的尾部。
create
可选的。Boolean值,它表示如果指定的filename 不存在是否可以创建一个新文件。如果创建新文件,其值为True。否则为False。缺省值为False。
format
可选的。用于指示打开文件的格式。如果省略,则文件以ASCII 格式打开。该格式包括三种:TristateUseDefault表示使用系统缺省打开文件;TristateTrue表示以Unicode格式打开文件;TristateFalse表示以ASCII格式打开文件。
OpenAsTextStream方法
该方法用于打开一个指定的文件并可用来对文件进行读、写、追加操作。该方法和OpenTextFile方法类似。
格式:
Object.OpenAsTextStream ([iomode, [format]])
其中各个参数的意义如表18-6所示。
表18-6  OpenAsTextStream方法
对象
描述
Object
必需的。始终是一个 File 对象的名字。
Iomode
可选的。表明输入/输出方式。
format
可选的。用于指示打开文件的格式。如果省略,则文件以 ASCII 格式打开。
3.向文本文件添加数据
如果需要向文本文件添加数据,可以使用TextStream对象的WriteLine方法或Write方法。
WriteLine方法
该方法用于写入一个指定的字符串和换行符到一个 TextStream文件中。
格式:
object.WriteLine([string])
其中object是必需的,它表示一个TextStream对象的名字,string是可选的,表示要写入文件的内容。如果省略,一个换行符被写入文件中。
Write方法
该方法和WriteLine方法类似,也是将一个指定的字符串写入到一个TextStream文件中,但是不包含换行符。
格式:
object.Write(string)
例如,创建一个“Test”文本文件,向该文件中输入5行数据。
Sub 添加数据()
    Dim fso As New FileSystemObject
    Dim txt As TextStream
    Set txt = fso.CreateTextFile("D:\")
    For i = 1 To 5
        txt.WriteLine "第" & i & "行数据"
    Next
    txt.Close
End Sub
3.读取文本文件中的数据
根据实际情况,有时候需要读取文本文件中的数据。因此,FSO对象中提供读取TextStream对象的方法。
ReadAll方法
该方法是读取整个的TextStream文件并返回得到其中的字符串。
Read方法
vba做excel窗体录入教程如果读取的文件过大,使用ReadAll方法浪费内存资源。此时,可以使用Read方法,即按照用户需要读取所需的文件字符数。
格式:
object.Read(characters)
其中Characters是必需的,表示从文件中要读取的字符数。
例如,读取将上例中的文本文件,并显示在对话框中。
Sub 读取文件()
    Dim fso As New FileSystemObject
    Dim fle As File
    Dim txt As TextStream
    Dim s As String
    '引用文件
    Set fle = fso.GetFile("d:\")
    '打开文件
    Set txt = fle.OpenAsTextStream(ForReading)
    '读取所有数据
    s = txt.ReadAll
    '关闭文本文件
    txt.Close
    MsgBox s
End Sub
3.操作文本文件
在创建文本文件之后,可以对其进行复制和删除等操作。这样需要用到Copy和Delete方法。
复制文本文件
在复制文件时,需要用到Copy方法,即将指定的文件从一个地方复制到另一个地方。
格式:
object.Copy destination[, overwrite]
其中destination是必需的,表示文件要复制到的路径,不可以使用通配符。而overwrite是可选的,且为Boolean类型的值。如果该值为True(缺省),则已存在的文件将被覆盖。如果为False,则它们不被覆盖。
例如,将上例中的文本文件复制到C盘。
Sub 复制文件()
    Dim fso As New FileSystemObject
    Dim fle As File
    Set fle = fso.GetFile("d:\")
    fle.Copy ("c:\")
End Sub
提  示
对一个 File 或 Folder,Copy 方法的结果和执行 FileSystemObject.CopyFile 或FileSystemObject.CopyFolder 操作的结果是一样的,在后者中,object所引用的文件是作为参数传递的。后面的方法能够复制多个文件或文件夹。
删除文本文件
如果文本文件不再需要,可以将其删除。删除文本文件时使用Delete方法,即删除一个指定的文件。
格式:
object.Delete force
其中,force为可选的,Boolean值,如果要删除具有只读属性设置的文件,其值为True。当其值为False 时(缺省),不能删除具有只读属性设置的文件或文件夹。
提  示
对于一个文本文件,Delete方法的结果和执行FileSystemObject.DeleteFile 或FileSystemObject.DeleteFolder操作的结果是一样的。
Delete 方法对于文件夹内是否有内容不做区别。不管指定的文件夹是否有内容,它都被删除。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。