Excel VBA操作文件大全 下载本文

a.Close

Debug.Print retstring '可看到读取了第一行的字符 End Sub ·ReadLine 方法

语法:object.ReadLine

功能:从一个 TextStream 文件读取一整行(到换行符但不包括换行符)并返回得到的字符串。 示例:

Sub du_line()

Dim fso, a, retstring Const ForReading = 1

Set fso = CreateObject(\

Set a = fso.OpenTextFile(\

Do While a.AtEndOfStream <> True '是否在 TextStream 文件末尾 retstring = a.ReadLine '读取一行

Debug.Print retstring '显示在立即窗口 Loop a.Close End Sub ·ReadAll 方法

语法:object.ReadAll

功能:读取整个的 TextStream 文件并返回得到的字符串。 说明:对于大的文件,使用ReadAll方法浪费内存资源。应使用其它的技术去输入一个文件,比如按行读取文件。 示例: Sub du_all()

Dim fso, a, retstring Const ForReading = 1

Set fso = CreateObject(\

Set a = fso.OpenTextFile(\retstring = a.Readall '全部读取 Debug.Print retstring a.Close End Sub

还有两个辅助读取的方法: ·Skip 方法

语法:object.Skip(characters)

功能:当读一个 TextStream 文件时跳过指定数量的字符。 示例:

Sub duskip()

Dim fso, a, retstring Const ForReading = 1

Set fso = CreateObject(\

Set a = fso.OpenTextFile(\

Do While a.AtEndOfLine <> True '是否到行末 retstring = retstring & a.Read(1) '读取一个字符 a.Skip (1) '跳过一个字符 Loop a.Close

Debug.Print retstring '可看到读取了第一行的奇数位的字符 End Sub ·SkipLine 方法

语法:object.SkipLine

功能:当读一个 TextStream 文件时跳过下一行。

3、写入数据到文件

写入数据到文件也有三种方法。 ·Write 方法

语法:object.Write(string)

功能:写一个指定的字符串到一个 TextStream 文件。 示例: Sub xie()

Const ForWriting = 2, ForAppending = 8 Dim fs, f

Set fs = CreateObject(\

Set f = fs.OpenTextFile(\ f.Write \写入字符串 f.Close End Sub ·WriteLine 方法

语法:object.WriteLine([string])

功能:写入一个指定的字符串和换行符到一个 TextStream 文件中。 示例:

f.WriteLine(\写入字符串,加一个换行符。 ·WriteBlankLines 方法

语法:object.WriteBlankLines(lines)

功能:写入指定数量的换行符到一个 TextStream 文件中。 示例:

f.WriteBlankLines(3) '相当于按3次回车。 4、关闭文件

利用TextStream 对象的Close方法,上面的示例中已经有了,很简单。

(七)总结

从上面的介绍,我们看到使用FileSystemObject对象处理文件、文件夹比使用VBA语句的方法具有更容易存在的特点。这是因为FileSystemObject对象使用了面向对象的语法。另外FileSystemObject对象处理文本文件毫不逊色于VBA语句,非常值得推荐。唯一的问题是不能处理二进制文件,微软在有关文档中称计划将来支持二进制文件,不过应该只是计划而已,呵呵。

Excel-VBA操作文件四大方法之四__利用API函数来处理文件

通过前面三种方法的介绍,你是否已经觉得足够了?是的,前面的方法完全可以应付几乎所有的文件操作。但是为了普及一下API,展示一下API的魅力,最后向大家介绍一下如何利用API函数来处理文件。另一方面也是本人对API情有独钟,为她做一下广告,呵呵。 大家对API的强大也是有所耳闻了,在文件操作方面,API自然毫不逊色。

说明:为了文章简洁,我们先给出API函数的名称及功能,其完整的声明及常数就不再一一细诉,只在示例中给出其完整用法。 (一)处理驱动器及目录

下面是windows中提供的对于目录进行操作的API函数及其功能: CreateDirectory,CreateDirectoryEx 创建一个新目录 GetCurrentDirectory 在一个缓冲区中装载当前目录

GetDiskFreeSpace,GetDiskFreeSpaceEx 获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量

GetDriveType 判断一个磁盘驱动器的类型 GetFullPathName 获取指定文件的完整路径名

GetLogicalDrives 判断系统中存在哪些逻辑驱动器字母

GetLogicalDriveStrings 获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径 GetSystemDirectory 这个函数能取得Windows系统目录(System目录)的完整路径名。在这个目录中,包含了所有必要的系统文件。根据微软的标准,其他定制控件和一些共享组件也可放到这个目录。通常应避免在这个目录里创建文件。在网络环境中,往往需要管理员权限才可对这个目录进行写操作

GetTempPath 获取为临时文件指定的路径

GetVolumeInformation 获取与一个磁盘卷有关的信息

GetWindowsDirectory 这个函数能获取Windows目录的完整路径名。在这个目录里,保存了大多数windows应用程序文件及初始化文件 RemoveDirectory 删除指定目录 SetCurrentDirectory 设置当前目录

SetVolumeLabel 设置一个磁盘的卷标(Label)

下面通过几个例子来详细的了解一下其中主要的几个函数及其用法: 1、GetLogicalDrives

作用:判断系统中存在哪些逻辑驱动器字母

声明:Declare Function GetLogicalDrives Lib \说明:此函数的返回值类型为Long,这个结构中的二进制位标志着存在哪些驱动器。其中,位0设为1表示驱动器A:存在于系统中;位1设为1表示存在B:驱动器;以次类推 示例:

Public Sub Get_LogicalDrives()

Dim LDs As Long, Cnt As Long, sDrives As String LDs = GetLogicalDrives sDrives = \ For Cnt = 0 To 25

If (LDs And 2 ^ Cnt) <> 0 Then

sDrives = sDrives + \\ End If Next Cnt MsgBox sDrives End Sub

上面的示例中,我们通过二进制运算,将返回值转换成字符。如果你的机上有C,D,E,F,G,H这几个驱动器,那么LDs的值就是252,转成二进制为11111100,从右往左,依次代表A,B,C,D,...,为0的说明没有此驱动器字母。大家可以自己试一试。 2、GetDriveType

作用:判断一个磁盘驱动器的类型

声明:Declare Function GetDriveType Lib \String) As Long

说明:此函数的返回值类型为Long,如驱动器不能识别,则返回零。如指定的目录不存在,则返回1。如执行成功,则用下述任何一个常数指定驱动器类型:DRIVE_REMOVABLE(表示磁盘可以从驱动器上移走,通常是软驱), DRIVE_FIXED(磁盘不能从驱动器上移走,通常为本地硬盘), DRIVE_REMOTE(驱动器是远程网络驱动器), DRIVE_CDROM(驱动器是CD-ROM驱动器) 或 DRIVE_RAMDISK(驱动器是RAM驱动器) 参数为String类型,包含了驱动器根目录路径的一个字串

此函数的功能与FSO的Drive对象的DriveType属性是一样的。 示例:

\\'定义常数变量

Private Const DRIVE_CDROM = 5 \\'表示光盘驱动器 Private Const DRIVE_FIXED = 3 \\'表示硬盘驱动器 Private Const DRIVE_RAMDISK = 6 \\'表示RAM驱动器 Private Const DRIVE_REMOTE = 4 \\'表示网络驱动器 Private Const DRIVE_REMOVABLE = 2 \\'表示软盘驱动器

Private Sub Get_DriveType() Dim temp As Long

temp = GetDriveType(\\\'取的d:盘驱动器类型 Select Case temp

Case DRIVE_CDROM

MsgBox \光盘驱动器\ Case DRIVE_FIXED

MsgBox \硬盘驱动器\ Case DRIVE_RAMDISK

MsgBox \驱动器\ Case DRIVE_REMOTE

MsgBox \网络驱动器\ Case DRIVE_REMOVABLE

MsgBox \ABLE: 软盘驱动器\ End Select End Sub

3、GetDiskFreeSpaceEx