您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > VBA_FSO对象模型
1VBAFSO对象模型详解一、简介文件系统对象FSO的英文全称是FileSystemObject,这种对象模型提出了有别于传统的文件操作语句处理文件和文件夹的方法。通过采用object.method这种在面向对象编程中广泛使用的语法,将一系列操作文件和文件夹的动作通过调用对象本身的属性直接实现。FSO对象模型不仅可以象使用传统文件操作语句那样实现文件的创建、改变、移动和删除,而且可以检测是否存在指定的文件夹,如果存在,那么,这个文件夹又位于磁盘上的什么位置。更令人高兴的是FSO对象模型还可以获取关于文件和文件夹的信息,如名称、创建日期或最近修改日期等以及当前系统中使用的驱动器的信息,如驱动器的种类是CD-ROM还是可移动磁盘,当前磁盘的剩余空间还有多少。而以前要获取这些信息必须通过调用WindowsAPI函数集中的相应函数才能实现。FSO对象模型包含在Scripting类型库(Scrrun.Dll)中,它同时包含了Drive、Folder、File、FileSystemObject和TextStream五个对象。其中Drive用来收集驱动器的信息,如可用磁盘空间或驱动器的类型;Folder用于创建、删除或移动文件夹,同时可以进行向系统查询文件夹的路径等操作;File的基本操作和Folder基本相同,所不同的是Files的操作主要是针对磁盘上的文件进行的;FileSystemObject是FSO对象模型中最主要对象,它提供了一套完整的可用于创建、删除文件和文件夹,收集驱动器、文件夹、文件相关信息的方法。需要注意的是,FSO对象模型提供的方法是冗余的,也就是说在实际使用中,FSO对象模型中包含的不同对象的不同方法进行的却是同样的操作,而且FileSystemObject对象的方法直接作用于其余对象,所以在后面的文章中并没有单独提到FileSystemObject对象,千万不要以为没有提到就不重要,事实上FileSystemObject对象在整个FSO对象模型中无处不在;最后的TextStream对象则是用来完成对文件的读写操作的。创建FSO对象模型:由于FSO对象包含在Scripting类型库(Scrrun.Dll)中,所以在使用前首先需要在在工程中引用这个文件,单击“工程”,“引用”,然后在“引用”对话框中选中“MicrosoftScriptingRuntime”前的复选框,然后单击“确定”。要创建FSO对象可以采用两种方法,一种是将一个变量声明为FSO对象类型:DimfsoTestAsNewFileSystemObject;另一种是通过CreateObject方法创建一个FSO对象:SetfsoTest=CreateObject(“Scripting.FileSystemObject)。在实际使用中具体采用哪种声明方法,可根据个人的使用习惯而定。完成了FSO对象模型的创建之后,就可以利用创建的对象模型的方法访问下属各个对象的属性来获取所需信息或进行相关操作了FileSystemObject对象有许多用来操作文件系统的方法和属性。下面先看一个例子,如下面的代码:SubFileInfo()DimfsAsObjectDimobjFileAsObjectDimstrMsgAsStringSetfs=CreateObject(Scripting.FileSystemObject)SetobjFile=fs.GetFile(C:\Windows\System.ini)strMsg=文件名:&objFile.Name&vbCrLfstrMsg=strMsg&硬盘:&objFile.Drive&vbCrLfstrMsg=strMsg&创建日期:&objFile.DateCreated&vbCrLf2strMsg=strMsg&修改日期:&objFile.DateLastModified&vbCrLfMsgBoxstrMsg,,文件信息EndSubFileInfo过程首先使用CreateObject函数创建一个FileSystemObject对象,用来访问计算机的文件系统。然后,使用GetFile方法创建一个File对象并返回对System.ini文件的引用。接着,利用File对象的Name属性、Drive属性、DateCreated属性、DateLastModified属性返回文件的相应信息。二、FileSystemObject中的对象的方法和属性(一)FSO对象属性:1、Drives属性Drives属性是FileSystemObject对象唯一的属性,返回对硬盘驱动器集合(Drives)的引用,是一个只读属性。其语法为:oFileSysObj.Drives其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。Drives属性返回的集合中的每个成员都是Drive对象,表示系统中一个可用的驱动器。可以使用For…Next循环迭代系统中所有驱动器,或者使用Drives集合的Item方法读取某个Drive对象(代表系统中的某个驱动器)。例如,下面的代码创建计算机驱动盘清单:SubDrivesList()DimfsAsObjectDimcolDrivesAsObjectDimDriveAsObjectDimstrDriveAsStringSetfs=CreateObject(Scripting.FileSystemObject)SetcolDrives=fs.DrivesForEachDriveIncolDrivesstrDrive=驱动器&Drive.DriveLetter&:Debug.PrintstrDriveNextEndSub方法:1、BuildPath方法其语法为:oFileSysObj.BuildPath(Path,Name)其中,oFileSysObj为任何能够返回FileSystemObject对象的对象变量。参数Path必需,指定驱动器或文件夹路径,String类型,可以是绝对路径也可以是相对路径,不一定要包含驱动器名。参数Name必需,指定附加在Path后的文件夹或文件路径,String类型。参数Path或Name都不一定要求是当前已经存在的路径或文件夹。BuildPath方法通过合并参数Path和文件夹或文件名生成一个字符串,并且在必要的地方加上正确的3主机系统路径分隔符。该方法不能检验新的文件夹或文件名的有效性。与人工合并两个字符串相比,使用BuildPath函数的惟一好处就是它能够选择正确的路径分隔符。2、FileExists方法FileExists方法用于判断指定的文件是否存在,若存在则返回True。其语法为:oFileSysObj.FileExists(FileSpec)其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象。参数FileSpec必需,代表文件的完整路径,String类型,不能包含有通配符。如果用户有充分的权限,FileSpec可以是网络路径或共享名,例如:Ifofs.FileExists(\\TestPath\Test.txt)Then示例SubIfFileExists()DimfsAsObjectDimstrFileAsStringSetfs=CreateObject(Scripting.FileSystemObject)strFile=InputBox(请输入文件的完整名称:)Iffs.FileExists(strFile)ThenMsgBoxstrFile&已经找到.ElseMsgBox该文件不存在.EndIfEndSub3、GetFile方法GetFile方法用来返回一个File对象。其语法为:oFileSysObj.GetFile(FilePath)其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数FilePath必需,指定路径和文件名,String类型。可以是绝对路径或相对路径。如果FilePath是一个共享名或网络路径,GetFile确认该驱动器或共享是File对象创建进程的一部分。如果参数FilePath指定的路径的任何部分不能连接或不存在,就会产生错误。GetFile方法返回的是File对象,而不是TextStream对象。File对象不是打开的文件,主要是用来完成如复制或移动文件和询问文件的属性之类的方法。尽管不能对File对象进行写或读操作,但可以使用File对象的OpenAsTextStream方法获得TextStream对象。要获得所需的FilePath字符串,首先应该使用GetAbsolutePathName方法。如果FilePath包含网络驱动器或共享,可以在调用GetFile方法之前用DriveExists方法来检验所需的驱动器是否可用。因为在FilePath指定的文件不存在时会产生错误,所以应该在调用GetFile之前调用FileExists方法确定文件是否存在。必须用Set语句将File对象赋给一个局部对象变量。4、GetFileName方法GetFileName方法返回给定路径的文件名称部分。其语法为:oFileSysObj.GetFileName(Path)其中,oFileSysObj表示任何能够返回FileSystemObject对象的对象变量。参数Path必需,指定路径说明,String类型。如果不能从给定的Path确定文件名,则返回一个零长字符串(”)。Path可以为绝对路径或相对路径。GetFileName方法不能检验Path中是否存在指定的文件。Path可以为网络驱动器或共享。GetFileName本身不具有智能,它认为字符串中不属于驱动器说明的最后部分就是一个文件名,更像是一个字符串处4理函数而不是对象处理方法。5、GetFileVersion方法GetFileVersion方法返回文件的版本。6、CopyFile方法CopyFile方法用来复制文件,将文件从一个文件夹复制到另一个文件夹。其语法为:oFileSysObj.CopyFileSource,Destination[,OverwriteFiles]其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数Source必需,指定要复制的文件的路径和名称,String类型。参数Destination必需,代表复制文件的目标路径和文件名(可选),String类型。参数OverwriteFiles可选,表示是否覆盖一个现有文件的标志,True表示覆盖,False表示不覆盖,Boolean类型,默认值为True。参数source中源路径可以是绝对路径或相对路径,源文件名可包含通配符但源路径不能。在参数Destination中不能包含通配符。如果目标路径或文件设置为只读,则无论OverwriteFiles参数的值如何,都将无法完成CopyFile方法。如果参数OverwriteFiles设置为False且Destination指定的文件已经存在,则会产生一个运行时错误“文件已经存在”。如果在复制多个文件时出现错误,CopyFile方法将立即停止复制操作,该方法不具有撤销错误前文件复制操作的返回功能。如果用户有充分的权限,那么source或destination可以是网络路径或共享名,例如:CopyFile\\NTSERV1\RootTest\test.txt,C:\RootOneCopyFile方法可以复制一个保存在特定文件夹中的文件。如果文件夹本身有包含文件的子文件夹,则使用CopyFile方法不能复制这些文件,应该使用CopyFolder方法。例如:SubCopyFile()DimfsAsObjectDimstrFileAsStringDimstrNewFileAsStringstrFile=C:\test.docstrNewFile=C:\ProgramFiles\test.docSetfs=CreateObject(Scr
本文标题:VBA_FSO对象模型
链接地址:https://www.777doc.com/doc-6372133 .html