三、利用FileSystemObject对象处理文件
FileSystemObject微软专门为访问计算机文件系统提供的对象模型,具有大量的属性、方法和事件。它使用面向对象的object.method文件夹和文件的语法处理非常方便(需要)Office 2000后版本)。FileSystemObject并不是VBA它的一部分是一个COM提供组件形式。因此,首先要创建使用FileSystemObject对象。
FileSystemObject对象模型包括以下对象和集合:
?FileSystemObject 主要对象包括创建、删除和获取相关信息,以及操作驱动器、文件夹和文件的方法和属性。
?Drive 对象,包括用于获取信息的方法和属性,这些信息是关于连接到系统上的驱动器有多少可用空间。驱动器不一定是硬盘或CD-ROM、U即使是通过网络逻辑连接的硬盘(如公司内部共享的服务器网络硬盘)。
?Drives 这些驱动器以实物或逻辑上的驱动器列表。Drives集合包括所有与类型无关的驱动器。
?File 对象包括创建、删除或移动文件的方法和属性。
?Files 收集,提供包含在文件夹中的所有文件的列表。
?Folder 对象包括创建、删除或移动文件夹的方法和属性。
?Folders 收集,提供包含在文件夹中的所有文件夹的列表。
?TextStream 用于读写文本文件的对象。
(一)准备工作
要使用FileSystemObject对象,首先要创建它。创建FileSystemObject对象要使用CreatObject函数。CreateObject 创建和返回函数 ActiveX 引用对象。
语法:CreateObject(class,[servername])
class 要创建的应用程序名称和类别。
servername 在网络服务器名称上创建对象。(如果要在远程计算机上创建对象)
class 参数使用 appname.objecttype 该语法包括以下部分:
appname 必要的;提供对象的应用程序名。
objecttype 必要的;待创建对象的类型或类型。
因此,我们使用以下代码来创建它FileSystemObject对象:
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Scripting是类型库的名称,FileSystemObject是要创建的对象的名称。
我们也可以创建它Dictionary 对象如下:
Dim d
Set d = CreateObject("Scripting.Dictionary")
(二)FileSystemObject对象的方法
FileSystemObject对象模型中的一些功能是重复的,如可用FileSystemObject对象的CpoyFile方法,也可用File对象的Copy复制文件的方法。下面先介绍FileSystemObject对象的方法。
1、GetDrive 方法
语法:object.GetDrive drivespec
drivespec参数可以是驱动器字符(c)、驱动器字符加冒号(c:)、驱动字符加冒号和路径分隔符(c:\\)或任何网络共享说明(\\\\computer2\\share1)。
功能:返回与指定路径中的驱动器对应的驱动器 Drive 对象。
示例:
Dim d
Set d = fso.GetDrive("D:") ';变量D代表驱动D对象
如果 drivespec 如果不符合任何可接受的形式或不存在,就会出错。
注意为了简洁,示例假设fso它已经创FileSystemObject对象
2、GetDriveName 方法
语法:object.GetDriveName(path)
功能:返回包含指定路径的驱动器名称的字符串。
示例:
Debug.Print fso.GetDriveName("c:\ est.txt") '立即显示窗口"c:"
3、GetExtensionName 方法
语法:object.GetExtensionName(path)
功能:返回包含路径最终部件扩展名的字符串。
示例:
Debug.Print fso.GetExtensionName("c:\ est.txt") '立即显示窗口"txt"
4、GetBaseName 方法
语法:object.GetBaseName(path)
功能:返回包含路径最终部件的基本名称(删除任何文件扩展名)的字符串。
示例:
Debug.Print fso.GetBaseName("c:\\abc\ est.txt") '立即显示窗口"test"
5、GetAbsolutePathName 方法
语法:object.GetAbsolutePathName(pathspec)
功能:从提供的路径说明中返回完整、清晰的路径。
示例:
如果pathspec为空字符串"";,返回当前路径。假设当前路径为C:\\Documents and Settings\\yc\\My Documents
Debug.Print fs.GetAbsolutePathName("") '显示C:\\Documents and Settings\\yc\\My Documents
Debug.Print fs.GetAbsolutePathName("c:..") '显示C:\\Documents and Settings\\yc,即上层目录
Debug.Print fs.GetAbsolutePathName("abc") '显示C:\\Documents and Settings\\yc\\My Documents\\abc
Debug.Print fs.GetAbsolutePathName("c:\ est.txt") '显示C:\ est.txt
6、GetFile 方法
语法:object.GetFile(filespec)
功能:返回与指定路径对应的文件 File 对象。
示例:
Dim f
Set f = fso.GetFile("c:\ est.txt") ';变量f代表文件test.txt对象
注:指定文件不存在的,会出错。
7、GetFileName 方法
语法:object.GetFileName(pathspec)
功能:返回指定路径的最终部件,不是驱动器说明的一部分。
示例:
Debug.Print fso.GetFileName("c:\\abc\ est.txt") '立即显示窗口"test.txt"
8、GetFolder 方法
语法:object.GetFolder(folderspec)
功能:返回与指定路径中文件夹对应的文件夹 Folder 对象。
示例:
Dim fd
Set fd = fso.GetFolder("c:\\windows") ';变量f代表文件夹windows对象
注:如果指定的文件夹不存在,则会出错。
9、GetSpecialFolder 方法
语法:object.GetSpecialFolder(folderspec)
功能:返回指定的特殊文件夹。
说明:
folderspec 参数可以是任何下列值:
WindowsFolder 0 Windows 文件夹,包括由 Windows 安装操作系统的文件。
说明:
folderspec 参数可以是任何下列值:
WindowsFolder 0 Windows 文件夹,包括由 Windows 安装操作系统的文件。
SystemFolder 1 包括库、字体、设备驱动程序的系统文件夹。
TemporaryFolder 2 Temp 存储临时文件的文件夹。它的路径在 TMP 在环境变量中。
10、GetParentFolderName 方法
语法:object.GetParentFolderName(path)
功能:返回包含指定路径最终部件父文件夹名称的字符串。
示例:
Debug.Print fso.GetParentFolderName("c:\ mp\ est.txt") '显示"c:\ mp"
11、GetTempName 方法
语法:object.GetTempName
功能:返回随机生成的临时文件或文件夹的名称,该名称在执行临时文件或文件夹时有用。
说明:GetTempName 该方法不生成文件。它只提供一个临时文件名称 CreateTextFile 用于创建文件。
示例:
Debug.Print fso.GetTempName '显示"radB0208.tmp";,每次都会变。
12、BuildPath 方法
语法:object.BuildPath(path, name)
功能:向现有路径添加一个名称。
示例:
Debug.Print fso.BuildPath("c:\ mp", "abc") '显示"c:\ mp\\abc"
13、CreateFolder 方法
语法:object.CreateFolder(foldername)
功能:创建文件夹。
注:如果已经存在指定的文件夹,则会出现错误。
示例:
fso.CreateFolder("c:\\myfolder") ';创建C盘myfolder文件夹
14、CopyFolder 方法
语法:object.CopyFolder source, destination[, overwrite]
source 必需的。可包括一个或多个复制文件夹的字符串文件夹说明。可包括一个或多个复制文件夹的字符串文件夹说明。
destination 必需的。指明 source 复制文件夹和子文件夹接受端的字符串不允许有通配符。
overwrite 可选的。Boolean 值,表示已存 在的