您好,欢迎访问三七文档
Excel-VBA操作文件四大方法之三三、利用FileSystemObject对象来处理文件FileSystemObject对象模型,是微软提供的专门用来访问计算机文件系统的,具有大量的属性、方法和事件。其使用面向对象的“object.method”语法来处理文件夹和文件,使用起来十分方便(需Office2000以后版本)。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对象:DimfsoAsObjectSetfso=CreateObject(Scripting.FileSystemObject)Scripting是类型库的名称,FileSystemObject就是要创建的对象的名字。同样我们可以创建Dictionary对象如下:DimdSetd=CreateObject(Scripting.Dictionary)(二)FileSystemObject对象的方法FileSystemObject对象模型中有些功能是重复的,如可用FileSystemObject对象的CpoyFile方法,也可用File对象的Copy方法来复制文件。下面先介绍FileSystemObject对象的方法。1、GetDrive方法语法:object.GetDrivedrivespecdrivespec参数可以是一个驱动器字符(c)、一个驱动器字符加一个冒号(c:)、一个驱动器字符加冒号和路径分隔符(c:\)或任何网络共享的说明(\\computer2\share1)。作用:返回一个与指定路径中的驱动器相对应的Drive对象。示例:DimdSetd=fso.GetDrive(D:)'变量d就代表了驱动器D对象如果drivespec不符合任何一种可以接受的形式或者不存在,则发生一个错误。注意:为简洁,示例中都假定fso是已经创建的FileSystemObject对象2、GetDriveName方法语法:object.GetDriveName(path)作用:返回一个包含指定路径的驱动器名字的字符串。示例:Debug.Printfso.GetDriveName(c:\test.txt)'立即窗口显示c:3、GetExtensionName方法语法:object.GetExtensionName(path)作用:返回一个包含路径中最后部件扩展名的字符串。示例:Debug.Printfso.GetExtensionName(c:\test.txt)'立即窗口显示txt4、GetBaseName方法语法:object.GetBaseName(path)作用:返回一个包含路径中最后部件的基本名字(去掉任何文件扩展名)的字符串。示例:Debug.Printfso.GetBaseName(c:\abc\test.txt)'立即窗口显示test5、GetAbsolutePathName方法语法:object.GetAbsolutePathName(pathspec)作用:从提供的路径说明中返回一个完整、明确的路径。示例:如果pathspec为空字符串,则返回当前路径。假设当前路径为C:\DocumentsandSettings\yc\MyDocumentsDebug.Printfs.GetAbsolutePathName()'显示C:\DocumentsandSettings\yc\MyDocumentsDebug.Printfs.GetAbsolutePathName(c:..)'显示C:\DocumentsandSettings\yc,即上层目录Debug.Printfs.GetAbsolutePathName(abc)'显示C:\DocumentsandSettings\yc\MyDocuments\abcDebug.Printfs.GetAbsolutePathName(c:\test.txt)'显示C:\test.txt6、GetFile方法语法:object.GetFile(filespec)作用:返回一个和指定路径中文件相对应的File对象。示例:DimfSetf=fso.GetFile(c:\test.txt)'变量f就代表了文件test.txt对象注意:如果指定的文件不存在,则发生一个错误。7、GetFileName方法语法:object.GetFileName(pathspec)作用:返回指定路径中的最后部件,该路径不是驱动器说明的一部分。示例:Debug.Printfso.GetFileName(c:\abc\test.txt)'立即窗口显示test.txt8、GetFolder方法语法:object.GetFolder(folderspec)作用:返回一个和指定路径中文件夹相对应的Folder对象。示例:DimfdSetfd=fso.GetFolder(c:\windows)'变量f就代表了文件夹windows对象注意:如果指定的文件夹不存在,则发生一个错误。9、GetSpecialFolder方法语法:object.GetSpecialFolder(folderspec)作用:返回指定的特殊文件夹。说明:folderspec参数可为任何的下列值:WindowsFolder0Windows文件夹,包含由Windows操作系统安装的文件。SystemFolder1系统文件夹,包含库、字体、设备驱动程序。TemporaryFolder2Temp文件夹,用于存储临时文件。它的路径在TMP环境变量中。10、GetParentFolderName方法语法:object.GetParentFolderName(path)作用:返回一个包含指定路径最后部件父文件夹名字的字符串。示例:Debug.Printfso.GetParentFolderName(c:\tmp\test.txt)'显示c:\tmp11、GetTempName方法语法:object.GetTempName作用:返回一个随机产生的临时文件或文件夹的名字,该名字在执行需要临时文件或文件夹的操作时有用。说明:GetTempName方法不产生一个文件,它仅提供一个临时文件名字,该名字可被CreateTextFile用于创建一个文件。示例:Debug.Printfso.GetTempName'显示radB0208.tmp,每次都会变。12、BuildPath方法语法:object.BuildPath(path,name)作用:追加一个名字到一个已经存在的路径。示例:Debug.Printfso.BuildPath(c:\tmp,abc)'显示c:\tmp\abc13、CreateFolder方法语法:object.CreateFolder(foldername)作用:创建一个文件夹。注意:如果指定的文件夹已经存在,则发生一个错误。示例:fso.CreateFolder(c:\myfolder)'在C盘创建一个myfolder文件夹14、CopyFolder方法语法:object.CopyFoldersource,destination[,overwrite]source必需的。指明一个或多个被复制文件夹的字符串文件夹说明,可以包括通配符。destination必需的。指明source中被复制文件夹和子文件夹的接受端的字符串,不允许有通配符。overwrite可选的。Boolean值,它表示已存在的文件夹是否被覆盖。如果为True,文件被覆盖。如果为False,文件不被覆盖。缺省值为True。作用:复制一个文件夹到另一个地方。说明:①通配符仅可用于source参数的最后一个路径部件。例如:fso.CopyFolderc:\mydocuments\letters\*,c:\tempfolder\这是可以的。但不能这样:fso.CopyFolderc:\mydocuments\*\*,c:\tempfolder\②如果source包含通配符或destination以路径分隔符(\)为结尾,则认为destination是一个已存在的文件夹,在其中复制相匹配的文件夹和子文件夹。否则认为destination是一个要创建的文件夹的名字。例如:fso.copyfolderc:\tmp,f:\abc\如果F盘没有abc文件夹,将发生错误。如果存在,可看到abc文件夹里有tmp文件夹。假如写成这样:fso.copyfolderc:\tmp,f:\abc此时若abc不存在,将创建abc文件夹,且将tmp文件夹里的内容复制到abc文件夹里,而不是tmp文件夹,只有abc是一个已经存在的文件夹时,才复制整个tmp文件夹到abc文件夹里。③如果destination是一个已存在的文件,则发生一个错误。④如果destination是一个目录,它将尝试复制文件夹和它所有的内容。如果一个包含在source的文件已在destination中存在,当overwrite为False时发生一个错误,否则它将尝试覆盖这个文件。⑤如果destination是一个只读目录,当尝试去复制一个已存在的只读文件到此目录并且overwrite为False时,则发生一个错误。⑥如果source不存在或使用的通配符不能和任何文件夹匹配,也发生一个错误。⑦CopyFolder方法停止在它遇到的第一个错误上,之前所做的操作是不会消失的,所以要注意。15、MoveFolder方法语法:object.MoveFoldersource,destination参数与CopyFolder的前两个一样。作用:将一个或多个文件夹从一个地方移动到另一个地方。说明:①只有在操作系统支持的情况下,这个方法才允许文件夹在卷之间移动。Windows是不允许的,将C盘的文件夹移到D盘是不行的。②如果source包含通配符或destination以路径分隔符(\)为结尾,则认为destination指定了一个已存在的文件夹,在此文件夹中移动相匹配的文件。否则,认为destination是一个要创建的目标文件夹名字。这点与CopyFolder是一样的。③如果destination是一个已存在的文件,则发生一个错误。④如果destination是一个
本文标题:Excel-VBA操作文件四大方法之三--利用FileSystemObject对象来处理文件
链接地址:https://www.777doc.com/doc-1911055 .html