![VBA_FSO对象模型_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-2/11/9d33493f-1a16-48fa-827e-f27168ebcdad/9d33493f-1a16-48fa-827e-f27168ebcdad1.gif)
![VBA_FSO对象模型_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-2/11/9d33493f-1a16-48fa-827e-f27168ebcdad/9d33493f-1a16-48fa-827e-f27168ebcdad2.gif)
![VBA_FSO对象模型_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-2/11/9d33493f-1a16-48fa-827e-f27168ebcdad/9d33493f-1a16-48fa-827e-f27168ebcdad3.gif)
![VBA_FSO对象模型_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-2/11/9d33493f-1a16-48fa-827e-f27168ebcdad/9d33493f-1a16-48fa-827e-f27168ebcdad4.gif)
![VBA_FSO对象模型_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-2/11/9d33493f-1a16-48fa-827e-f27168ebcdad/9d33493f-1a16-48fa-827e-f27168ebcdad5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VBA FSO对象模型详解一、简 介文件系统对象FSO的英文全称是File System Object ,这种对象模型提出了有别于传统的文件操作语句处理文件和文件夹的方法。通过采用object.method这种在面向对象编程中广泛使用的语法,将一系列操作文件和文件夹的动作通过调用对象本身的属性直接实现。FSO 对象模型不仅可以象使用传统文件操作语句那样实现文件的创建、改变、移动和删除,而且可以检测是否存在指定的文件夹,如果存在,那么,这个文件夹又位于磁盘上的什么位置。更令人高兴的是FSO 对象模型还可以获取关于文件和文件夹的信息,如名称、创建日期或最近修改日期等以及当前系统中使用的驱动器的信息
2、,如驱动器的种类是CDROM还是可移动磁盘,当前磁盘的剩余空间还有多少。而以前要获取这些信息必须通过调用Windows API函数集中的相应函数才能实现。FSO对象模型包含在Scripting 类型库 (Scrrun.Dll)中,它同时包含了Drive、Folder、File、FileSystemObject和TextStream五个对象。其中Drive用来收集驱动器的信息,如可用磁盘空间或驱动器的类型;Folder用于创建、删除或移动文件夹,同时可以进行向系统查询文件夹的路径等操作;File的基本操作和Folder基本相同,所不同的是Files的操作主要是针对磁盘上的文件进行的;FileSy
3、stemObject是FSO对象模型中最主要对象,它提供了一套完整的可用于创建、删除文件和文件夹,收集驱动器、文件夹、文件相关信息的方法。需要注意的是,FSO对象模型提供的方法是冗余的,也就是说在实际使用中,FSO对象模型中包含的不同对象的不同方法进行的却是同样的操作,而且FileSystemObject对象的方法直接作用于其余对象,所以在后面的文章中并没有单独提到FileSystemObject对象,千万不要以为没有提到就不重要,事实上FileSystemObject对象在整个FSO对象模型中无处不在;最后的TextStream对象则是用来完成对文件的读写操作的。创建FSO对象模型:由于FS
4、O对象包含在Scripting 类型库 (Scrrun.Dll)中,所以在使用前首先需要在在工程中引用这个文件,单击“工程”,“引用”,然后在“引用”对话框中选中“Microsoft Scripting Runtime”前的复选框,然后单击“确定”。要创建FSO对象可以采用两种方法,一种是将一个变量声明为FSO对象类型:Dim fsoTest As New FileSystemObject;另一种是通过CreateObject方法创建一个FSO 对象:Set fsoTest = CreateObject(“Scripting.FileSystemObject")。在实际使用中具体采用
5、哪种声明方法,可根据个人的使用习惯而定。完成了FSO对象模型的创建之后,就可以利用创建的对象模型的方法访问下属各个对象的属性来获取所需信息或进行相关操作了FileSystemObject对象有许多用来操作文件系统的方法和属性。下面先看一个例子,如下面的代码:Sub FileInfo( ) Dim fs As Object Dim objFile As Object Dim strMsg As String Set fs = CreateObject("Scripting.F
6、ileSystemObject") Set objFile = fs.GetFile("C:WindowsSystem.ini") strMsg = "文件名:" & objFile.Name & vbCrLf strMsg = strMsg & "硬盘:" & objFile.Drive & vbCrLf strMsg = strMsg & "创建日期:"
7、 & objFile.DateCreated & vbCrLf strMsg = strMsg & "修改日期:" & objFile.DateLastModified & vbCrLf MsgBox strMsg, , "文件信息"End SubFileInfo过程首先使用CreateObject函数创建一个FileSystemObject对象,用来访问计算机的文件系统。然后,使用GetFile方法创建一个File对象并返回对System.ini文件的引用。接着,利用File对
8、象的Name属性、Drive属性、DateCreated属性、DateLastModified属性返回文件的相应信息。二、FileSystemObject中的对象的方法和属性(一)FSO对象l 属性:1、Drives属性Drives属性是FileSystemObject对象唯一的属性,返回对硬盘驱动器集合(Drives)的引用,是一个只读属性。其语法为:oFileSysObj.Drives其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。Drives属性返回的集合中的每个成员都是Drive对象,表示系统中一个可用的驱动器。可以使用For Next循环迭
9、代系统中所有驱动器,或者使用Drives集合的Item方法读取某个Drive对象(代表系统中的某个驱动器)。例如,下面的代码创建计算机驱动盘清单:Sub DrivesList( )Dim fs As ObjectDim colDrives As ObjectDim Drive As Object Dim strDrive As String Set fs = CreateObject("Scripting.FileSystemObject") Set colDrives = fs.Drives For Each Drive In c
10、olDrivesstrDrive = "驱动器" & Drive.DriveLetter & ":" Debug.Print strDriveNextEnd Subl 方法:1、BuildPath方法其语法为:oFileSysObj.BuildPath (Path,Name)其中,oFileSysObj为任何能够返回FileSystemObject对象的对象变量。参数Path必需,指定驱动器或文件夹路径,String类型,可以是绝对路径也可以是相对路径,不一定要包含驱动器名。参数Name必需,指定附加在Path后的文件夹或文件路
11、径,String类型。参数Path或Name都不一定要求是当前已经存在的路径或文件夹。BuildPath方法通过合并参数Path和文件夹或文件名生成一个字符串,并且在必要的地方加上正确的主机系统路径分隔符。该方法不能检验新的文件夹或文件名的有效性。与人工合并两个字符串相比,使用BuildPath函数的惟一好处就是它能够选择正确的路径分隔符。2、FileExists方法FileExists方法用于判断指定的文件是否存在,若存在则返回True。其语法为:oFileSysObj.FileExists(FileSpec)其中,oFileSysObj代表任何能够返回FileSystemObject对象的
12、对象。参数FileSpec必需,代表文件的完整路径,String类型,不能包含有通配符。如果用户有充分的权限,FileSpec可以是网络路径或共享名,例如:If ofs.FileExists("TestPathTest.txt") Then示例Sub IfFileExists( ) Dim fs As ObjectDim strFile As StringSet fs = CreateObject("Scripting.FileSystemObject")strFile = InputBox("请输入文件的完整名称:&
13、quot;)If fs.FileExists(strFile) Then MsgBox strFile & "已经找到."Else MsgBox "该文件不存在."End IfEnd Sub3、GetFile方法GetFile方法用来返回一个File对象。其语法为:oFileSysObj.GetFile (FilePath)其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数FilePath必需,指定路径和文件名,String类型。可以是绝对路径或相对路径。如果FileP
14、ath是一个共享名或网络路径,GetFile确认该驱动器或共享是File对象创建进程的一部分。如果参数FilePath指定的路径的任何部分不能连接或不存在,就会产生错误。GetFile方法返回的是File对象,而不是TextStream对象。File对象不是打开的文件,主要是用来完成如复制或移动文件和询问文件的属性之类的方法。尽管不能对File对象进行写或读操作,但可以使用File对象的OpenAsTextStream方法获得TextStream对象。要获得所需的FilePath字符串,首先应该使用GetAbsolutePathName方法。如果FilePath包含网络驱动器或共享,可以在调用
15、GetFile方法之前用DriveExists方法来检验所需的驱动器是否可用。因为在FilePath指定的文件不存在时会产生错误,所以应该在调用GetFile之前调用FileExists方法确定文件是否存在。必须用Set语句将File对象赋给一个局部对象变量。4、GetFileName方法GetFileName方法返回给定路径的文件名称部分。其语法为:oFileSysObj.GetFileName (Path)其中,oFileSysObj表示任何能够返回FileSystemObject对象的对象变量。参数Path必需,指定路径说明,String类型。如果不能从给定的Path确定文件名,则返回一
16、个零长字符串(”")。Path可以为绝对路径或相对路径。GetFileName方法不能检验Path中是否存在指定的文件。Path可以为网络驱动器或共享。GetFileName本身不具有智能,它认为字符串中不属于驱动器说明的最后部分就是一个文件名,更像是一个字符串处理函数而不是对象处理方法。5、GetFileVersion方法GetFileVersion方法返回文件的版本。6、CopyFile方法CopyFile方法用来复制文件,将文件从一个文件夹复制到另一个文件夹。其语法为:oFileSysObj.CopyFile Source,Destination ,OverwriteFiles
17、其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数Source必需,指定要复制的文件的路径和名称,String类型。参数Destination必需,代表复制文件的目标路径和文件名(可选),String类型。参数OverwriteFiles可选,表示是否覆盖一个现有文件的标志,True表示覆盖,False表示不覆盖,Boolean类型,默认值为True。参数source中源路径可以是绝对路径或相对路径,源文件名可包含通配符但源路径不能。在参数Destination中不能包含通配符。如果目标路径或文件设置为只读,则无论OverwriteFiles参数的
18、值如何,都将无法完成CopyFile方法。如果参数OverwriteFiles设置为False且Destination指定的文件已经存在,则会产生一个运行时错误“文件已经存在”。如果在复制多个文件时出现错误,CopyFile方法将立即停止复制操作,该方法不具有撤销错误前文件复制操作的返回功能。如果用户有充分的权限,那么source或destination可以是网络路径或共享名,例如:CopyFile "NTSERV1RootTesttest.txt","C:RootOne"CopyFile方法可以复制一个保存在特定文件夹中的文件。如果文件夹本身有包含文件
19、的子文件夹,则使用CopyFile方法不能复制这些文件,应该使用CopyFolder方法。例如:Sub CopyFile( ) Dim fs As ObjectDim strFile As StringDim strNewFile As StringstrFile = "C:test.doc"strNewFile = "C:Program Filestest.doc"Set fs = CreateObject("Scripting.FileSystemObject")fs.CopyFile strFile,
20、strNewFileMsgBox "已经创建了指定文件的副本."Set fs = NothingEnd Sub7、CreateTextFile方法CreateTextFile方法创建一个新的文件并返回其TextStream对象,其语法为:oFileSysObj.CreateTextFile Filename ,Overwrite,Unicode其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数Filename必需,代表任何有效文件名,String类型。在Filename中不允许使用通配符。Filename可以是相对路径也可以是绝
21、对路径,如果没有指定路径,则使用应用程序的当前驱动器或文件夹作为路径。如果指定的路径不存在,则该方法将失败。参数Overwrite可选,作为一个标志,指定是否覆盖一个具有相同文件名的现有文件,Boolean类型。默认值为False。参数Unicode可选,作为一个标志,指明用Unicode格式还是ASC格式写文件,Boolean类型。如果设置为True,则以Unicode格式创建文件,否则创建一个ASC文本文件。默认值为False。只有写操作才能使新创建的文本文件自动打开,如果以后希望读取该文件,则必须选关闭它再以读模式重新打开该文件。如果参数Filename中指定的路径设置为只读,则不论参数
22、Overwrite的值如保,CreateTextFile方法都将失败。如果用户有充分的权限,那么参数Filename可以是网络路径或共享名,例如:CreateTextFile "NTSERV1RootTestmyFile.doc"必须使用Set语句将TextStream对象赋值给局部对象变量。8、MoveFile方法MoveFile方法用来移动文件,将文件从一个文件夹移动到另一个文件夹。其语法为:oFileSysObj.MoveFile source,destination其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数sou
23、rce必需,指定要移动的文件的路径,String类型。参数destination必需,指定文件移动操作中的目标位置的路径,String类型。如果Source包含通配符或者destination以路径分隔符结尾,则认为destination是一个路径,否则认为destination的最后一部分是文件名。如果目标文件已经存在,则将出现一个错误。source可以包含通配符,但只能出现在它的最后一部分中。destination参数不能包含通配符。source或destination可以是相对路径或绝对路径,可以是网络路径或共享名。MoveFile方法在开始操作前先解析source和destinatio
24、n这两个参数。9、DeleteFile方法DeleteFile方法删除指定的一个或多个文件。其语法为:oFileSysObj.DeleteFile FileSpec,Force其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数FileSpec必需,代表要删除的单个文件或多个文件的名称和路径,String类型,可以在路径的最后部分包含通配符,可以为相对路径或绝对路径。如果在FileSpec中只有文件名,则认为该文件在应用程序的当前驱动器和文件夹中。参数Force可选,如果将其设置为True,则忽略文件的只读标志并删除该文件,Boolean类型,默认值
25、为False。如果指定要删除的文件已经打开,该方法将失败并出现一个“Permission Denied”错误。如果找不到指定的文件,则该方法失败。如果在删除多个文件的过程中出现错误,DeleteFile方法将立即停止删除操作,即不能删除余下的文件部分。该方法不具有撤销产生错误前文件删除操作的返回功能。如果用户有充分的权限,源路径或目标路径可以是网络路径或共享名。例如:DeleteFile “NTSERV1RootTestMyFile.doc”DeleteFile方法永久性地删除文件,并不把这些文件移到回收站中。示例Sub DeleteFile() Dim fs As
26、FileSystemObject Set fs = New FileSystemObject fs.DeleteFile "C:test.doc" MsgBox "删除了该文件."End Sub10、DriveExists方法DriveExists方法用来判断在本地计算机或者网络上是否存在指定的磁盘,若存在则返回True。其语法为:oFileSysObj.DriveExists (DriveSpec)其中,oFileSysObj代表任何能够返回FileSystemObject对
27、象的对象变量。参数DriveSpec必需,代表路径或驱动器名,String类型。如果DriveSpec是一个Windows驱动器名,则其后面不需要跟冒号,例如“C”和“C:”是一样的。DriveExists方法不能返回可移动驱动器的当前状态,要实现这一目的,必须使用指定驱动器的IsReady属性。如果用户有充分的权限,DriveSpec可以是网络路径或共享名,例如:If ofs.DriveExists("NTESERV1d$") Then在调用位于某驱动器上一个远程ActiveX服务器中的函数前,最好先使用DriveExists方法检测网络上是否存在该驱动器。示例Funct
28、ion DriveExists(disk) Dim fs As Object Dim strMsg As String Set fs = CreateObject("Scripting.FileSystemObject") If fs.DriveExists(disk) Then strMsg = "驱动器" & UCase(disk) & "盘已存在." Else
29、160; strMsg = UCase(disk) & "盘未找到." End If DriveExists = strMsgEnd Function11、GetDrive方法GetDrive方法返回Drive对象,即获得对指定驱动器的Drive对象的引用。其语法为:oFileSysObj.GetDrive (drivespecifier)其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数drivespeci
30、fier必需,代表驱动器名、共享名或网络路径,String类型。如果drivespecifier是一个共享名或网络路径,GetDrive确认它是Drive对象创建进程的一部分,否则会产生运行时错误“找不到路径”。如果指定的驱动器没有连接上或者不存在,则会出现运行时错误“设备不可用”。如果要从路径中导出drivespecifier字符串,应该首先用GetAbsolutePathName来确保驱动器是路径的一部分,然后在调用GetDriveName从全限定路径中提取出驱动器之前,用FolderExists方法检验路径是否有效,例如:Dim oFileSys As New FileSystemObj
31、ectDim oDrive As DrivesPath=oFileSys.GetAbsolutePathName(sPath)If oFileSys.FolderExists(sPath) Then set oDrive=oFileSys.GetDrive(oFileSys.GetDriveName(sPath)End If如果driverspecifier是一个网络驱动器或共享,在调用GetDrive方法之前,应该用DriveExists方法检验所需的驱动器是否可用。必须用Set语句将Drive对象赋给局部对象变量。示例Sub DriveInfo() &
32、#160; Dim fs, disk, infoStr, strDiskName strDiskName = InputBox("输入驱动器盘符:", "驱动器名称", "C:") Set fs = CreateObject("Scripting.FileSystemObject") Set disk = fs.GetDrive(fs.GetDriveName(strDiskName) infoStr = &qu
33、ot;驱动器:" & UCase(strDiskName) & vbCrLf infoStr = infoStr & "驱动器盘符:" & UCase(disk.DriveLetter) & vbCrLf infoStr = infoStr & "驱动器类型:" & disk.DriveType & vbCrLf infoStr = infoStr & "驱动文件系统:" &a
34、mp; disk.FileSystem & vbCrLf infoStr = infoStr & "驱动器系列号:" & disk.SerialNumber & vbCrLf infoStr = infoStr & "字节的总大小:" & FormatNumber(disk.TotalSize / 1024, 0) & "kb" & vbCrLf infoStr = infoStr &
35、"驱动器中的自由空间:" & FormatNumber(disk.FreeSpace / 1024, 0) & "kb" & vbCrLf MsgBox infoStr, vbInformation, "驱动器信息"End Sub12、GetDriveName方法GetDriveName方法返回一个包含硬盘名称或者网络共享名称的字符串。即返回给定路径的驱动器名,如果从给定的路径中不能确定驱动器名,则返回一个零长字符串(”)。其语法为:oFileSysObj.GetDriveName (
36、Path)其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数Path必需,指定路径,String类型。GetDriveName不能检验Path中是否存在指定的驱动器。Path可以是网络驱动器或共享。示例Function DriveName(disk)Dim fs As ObjectDim strDiskName As StringSet fs = CreateObject("Scripting.FileSystemObject")strDiskName = fs.GetDriveName(disk)DriveName = str
37、DiskNameEnd Function13、GetExtensionName方法返回给定路径中文件的扩展名。其语法为:oFileSysObj.GetExtensionName (Path)其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数Path必需,表示路径说明,String类型。如果不能确定Path中的扩展名,则返回一个零长字符串。GetExtensionName方法不能检验Path是否有效,Path可以为网络路径或共享。GetExtensionName没有智能功能,它简单地解析一个字符串,并返回Path最后部分中最后一个点后的文本。14、F
38、olderExists方法FolderExists方法可以判断指定的文件夹是否存在,若存在则返回True。其语法为:oFileSysObj.FolderExists(FolderSpec)其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数FolderSpec指定文件夹的完整路径,String类型,不能包含通配符。如果用户有充分的权限,FolderSpec可以是网络路径或共享名,例如:If ofs.FileExists ("NTSERV1d$TestPath") Then示例Sub IfFolderExists( )Dim fs
39、As ObjectSet fs = CreateObject("Scripting.FileSystemObject")MsgBox fs.FolderExists("C:Program Files")End Sub15、GetAbsolutePathName方法将相对路径转变为一个全限定路径(包括驱动器名),返回一个字符串,包含一个给定的路径说明的绝对路径。其语法为:oFileSysObj.GetAbsolutePathName (Path)其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数Path必需,代
40、表路径说明,String类型。“.”返回当前文件夹的驱动器名和完整路径。“.”返回当前文件夹的父文件夹的驱动器名和路径。“filename”返回当前文件夹中的文件的驱动器名、路径及文件名。所有相对路径名均以当前文件夹为基准。如果没有明确地提供驱动器作为Path的一部分,就以当前驱动器作为Path参数中的驱动器。在Path中可以包含任意个通配符。对于映射网络驱动器和共享而言,这种方法不能返回完整的网络地址,而是返回全限定的本地路径和本地驱动器名。GetAbsolutePathName不能检验指定路径中是否存在某个给定的文件或文件夹。16、GetBaseName方法返回路径的最后部分的名称,不包含
41、扩展名。其语法为:oFileSysObj.GetBaseName (Path)其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数Path必需,代表路径说明,String类型。Path中最后部分的文件扩展名不包含在返回的字符串中。GetBaseName方法不能检验Path中是否存在给定的文件或文件夹。GetBaseName方法没有舍去文件扩展名并返回Path的基本名称的智能功能。也就是说,它不能识别路径的最后部分是路径还是文件名。如果最后部分包括一个或多个点“.”,它仅仅删除最后一个占以及该点后的文本。所以如果Path为“.”,GetBaseName
42、方法返回一个空字符串;如果Path为“.”,GetBaseName方法返回“.”。换句话说,它只不过是一个字符串处理函数,而不是一个文件函数。17、GetFolder方法GetFolder方法返回Folder对象。其语法为:oFileSysObj.GetFolder (FolderPath)其中,oFileSysObj代表任何能返回FileSystemObject对象的对象变量。参数FolderPath必需,指定所需文件夹的路径,String类型,可以为相对路径或绝对路径。如果FolderPath是共享名或网络路径,GetFolder确认该驱动器或共享是File对象创建进程的一部分。如果Fol
43、derPath的任何部分不能连接或不存在,就会产生一个错误。要获得所需的Path字符串,首先应该使用GetAbsolutePathName方法。如果FolderPath包含一个网络驱动器或共享,可以在调用GetFolder方法之前使用DriveExists方法确认指定的驱动器是否可用。由于GetFolder方法要求FolderPath是一个有效文件夹的路径,所以应调用FolderExists方法来检验FolderPath是否存在。必须使用Set语句将Folder对象赋给一个局部对象变量。示例Sub FilesInFolder( )Dim fs As ObjectDim objFolder As
44、 ObjectDim objFile As ObjectSet fs = CreateObject("Scripting.FileSystemObject")Set objFolder = fs.GetFolder("C:") Workbooks.AddFor Each objFile In objFolder.FilesActiveCell.SelectSelection.Formula = objFile.NameActiveCell.Offset(0, 1). SelectSelection.Formula = objFile.TypeA
45、ctiveCell.Offset(1, -1). SelectNextColumns("A:B").SelectSelection.Columns.AutoFitEnd Sub18、GetParentFolderName方法返回给定路径中最后部分前的文件夹名,其语法为:oFileSysObj.GetParentFolderName (Path)其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数Path必需,指定路径说明,String类型。如果从Path中不能确定父文件夹名,就返回一个零长字符串(”)。Path可以为相对路径或绝对
46、路径。可以是网络驱动器或共享。GetParentFolderName方法不能检验Path的某个部分是否存在。GetParentFolderName方法认为Path中不属于驱动器说明的那部分字符串除了最后一部分外余下的字符串就是父文件夹。除此之外它不做任何其他检测,更像是一个字符串解析和处理例程而不是与对象处理有关的例程。19、GetSpecialFolder方法GetSpecialFolder方法返回操作系统文件夹路径,其中0代表Windows文件夹,1代表System(系统)文件夹,2代表Temp(临时)文件夹。其语法为:oFileSysObj.GetSpecialFolder (Speci
47、alFolder)其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数SpecialFolder必需,为特殊的文件夹常数,表示三种特殊系统文件夹中其中一个的值。可以使用Set语句将Folder对象赋给一个局部对象变量,但是如果只对检索特殊的文件夹感兴趣,就可以使用下列语句来实现:sPath=oFileSys.GetSpecialFolder (iFolderConst)或:sPath=oFileSys.GetSpecialFolder (iFolderConst).Path由于Path属性是Folder对象的缺省属性,所认第一个语句有效。因为不是给一
48、个对象变量赋值,所以赋给sPath的值是缺省的Path属性值,而不是对象引用。示例Sub SpecialFolders( )Dim fs As ObjectDim strWindowsFolder As StringDim strSystemFolder As StringDim strTempFolder As StringSet fs = CreateObject("Scripting.FileSystemObject")strWindowsFolder = fs.GetSpecialFolder(0)strSystemFolder = fs.GetSpecialFol
49、der(1)strTempFolder = fs.GetSpecialFolder(2)MsgBox strWindowsFolder & vbCrLf & strSystemFolder & vbCrLf _& strTempFolder, vbInformation + vbOKOnly, "Special Folders"End Sub20、GetTempName方法返回系统创建的一个临时文件或文件夹名。其语法为:oFileSysObj.GetTempName其中,oFileSysObj代表任何能够返回FileSystemObject对
50、象的对象变量。GetTempName方法不能创建临时文件或文件夹,它仅仅提供一个可用于CreateTextFile方法的文件或文件夹名。一般来说,不必创建自已的临时文件名。Windows在Windows API中提供了一种算法来创建特殊的临时文件或文件夹名,这样Windows才能识别它们。GetTempName很好地包装了GetTempFilename API函数。21、CreateFolder方法CreateFolder方法用于在指定的路径下创建一个新文件夹,并返回其Folder对象。其语法为:oFileSysObj.CreateFolder (Path)其中,oFileSysObj代表任何
51、能够返回FileSystemObject对象的对象变量。参数Path必需,为一个返回要创建的新文件夹名的表达式,String类型。Path指定的路径可以是相对路径也可以是绝对路径,如果没有指定路径则使用当前驱动器和目录作为路径。在新的文件夹名中不能使用通配符。如果参数Path指定的路径为只读,则CreateFolder方法将失败;如果参数Path指定的文件夹已经存在,就会产生运行时错误“文件已经存在”。如果用户有充分的权限,则参数Path可以指定为网络路径或共享名,例如:CreateFolder "NTSERV1RootTestnewFolder"在实际使用时,必须使用Se
52、t语句将Folder对象赋给对象变量,例如:Dim oFileSys As New FileSystemObjectDim oFolder As FolderSet oFolder=oFileSys.CreateFolder("MyFolder")示例Sub MakeNewFolder( )Dim fs, objFolderSet fs = CreateObject("Scripting.FileSystemObject")Set objFolder = fs.CreateFolder("C:TestFolder")MsgBox &q
53、uot;创建了一个名称为" & objFolder.Name & "的文件夹."End Sub22、CopyFolder方法CopyFolder方法用于复制文件夹,即将一个文件夹的内容(包括其子文件夹)复制到其他位置。其语法为:oFileSysObj.CopyFolder Source,Destination,OverwriteFiles其中,参数oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数Source必需,指定要复制的文件夹的路径和文件夹名,String类型,必须使用通配符或者非路径分隔符来结束。参数
54、Destination必需,指定文件夹复制操作的目标文件夹的路径,String类型。参数OverwriteFiles可选,表示是否被覆盖一个现有文件的标志,True表示覆盖,False表示不覆盖,Boolean类型。通配符只能在参数Source中使用,但是只能放在最后的组件中。在参数Destination中不能使用通配符。除非不允许使用通配符,否则就可以把源文件夹中的所有子文件夹和文件都复制到Destination指定的文件夹中,也就是说CopyFolder方法是递归的。如果参数Destination以一个路径分隔符结束或者参数Source以一个通配符结束,CopyFolder方法就认为参数S
55、ource中的指定的文件夹存在于参数Destination中,否则就创建这样一个文件夹。例如,假设有如下的文件夹结构:CopyFolder "C:Rootone*","C:RootTwo"产生如下的文件夹结构:CopyFolder "C:Rootone","C:RootTwo"产生如下的文件夹结构:如果参数Destination指定的目标路径或任意文件被设置成只读属性,则不论OverwriteFiles的值如何,CopyFolder方法者将失效。如果OverwriterFiles设置为False,而参数Source
56、指定的源文件夹或任何文件存在于参数Destination中,将产生运行时错误“文件已经存在”。如果在复制多个文件夹时出现错误,CopyFolder方法立即停止复制操作,不再复制余下要复制的文件。该方法不具有撤销产生错误前文件复制操作的返回功能。如果用户有充分的权限,source或destination都可以是网络路径或共享名,例如:CopyFolder "C:Rootone","NTSERV1d$RootTwo"Sub MakeFolderCopy()Dim fs As FileSystemObjecSet fs = New FileSystemObje
57、ctIf fs.FolderExists("C:TestFolder") Thenfs.CopyFolder "C:TestFolder", "C:FinalFolder"MsgBox "已复制该文件夹."End IfEnd Sub23、MoveFolder方法MoveFolder方法用来移动文件夹,将文件夹及其文件和子文件夹一起从某个位置移动到另一个位置。其语法为:oFileSysObj.MoveFolder source,destination其中,oFileSysObj代表任何能够返回FileSystemOb
58、ject对象的对象变量。参数Source指定要移动的文件夹的路径,String类型。参数destination指定文件夹移动操作中目标位置的路径,String类型。Source必须以通配符或非路径分隔符结束,可以使用通配符,但必须出现在最后一部分中。destination不能使用通配符。除非不允许使用通配符,否则源文件夹中所有的子文件夹和文件都被复制到destination指定的位置,也就是说MoveFolder方法是递归的。如果destination用路径分隔符结束或者source用通配符结束,MoveFolder就认为source中指定的文件夹存在于destination中。例如,假设有如
59、下文件夹结构:MoveFolder "C:Rootone*","C:RootTow"产生如下文件夹结构:MoveFolder "C:Rootone","C:RootTwo"产生如下文件夹结构:Source和destination可以为绝对路径或相对路径,可以为网络路径或共享名。MoveFile方法在开始操作前先解析source和destination这两个参数。24、DeleteFolder方法DeleteFolder方法用于删除指定的文件夹及其所有的文件和子文件夹。其语法为:oFileSysObj.DeleteF
60、older FileSpec,Force其中,oFileSysObj代表任何能够返回FileSystemObject对象的对象变量。参数FileSpec必需,指定要删除的文件夹的名称和路径,String类型。在参数FileSpec中,可以在路径的最后部分包含通配符,但不能用路径分隔符结束,可以为相对路径或绝对路径。参数Force可选,Boolean类型,如果设置为True,将忽略文件的只读标志并删除这个文件。默认为False。如果参数Force设置为False并且文件夹中的任意一个文件为只读,则该方法将失败。如果找不到指定的文件夹,则该方法失败。如果指定的文件夹中有文件已经打开,则不能完成删除
61、操作,且产生一个“Permisson Denied”错误。DeleteFolder方法删除指定文件夹中的所有内容,包括其他文件夹及其内容。如果在删除多个文件或文件夹时出现错误,DeleteFolder方法将立即停止删除操作,即不能删除余下的文件夹或文件。该方法不具有撤销产生错误前文件夹删除操作的返回功能。DeleteFolder方法永久性删除文件夹,并不把它们移到回收站中。如果用户有充分的权限,源路径和目标路径可以是网络路径或共享名,例如:DeleteFolder "RootTest"示例Sub RemoveFolder( )Dim fs As FileSystemObjectSet fs = New FileSystemObjectIf fs.FolderExists("C:TestFolder") Thenfs.DeleteFolder "C:TestFolder"MsgBox "该文件夹已经被删除."End IfEnd Sub25、OpenT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 软抽纸行业市场发展及发展趋势与投资战略研究报告
- 环保办公技术部如何推广绿色技术
- 2025年中国诚通下属单位诚通融资租赁有限公司招聘笔试参考题库附带答案详解
- 2025年低温黑体炉项目投资可行性研究分析报告
- 盆栽花卉市场需求与教育产业的结合
- 中国水产养殖行业发展前景预测及投资战略研究报告
- 南京市秦淮区2022年七年级《语文》下册期末试卷与参考答案
- 二级建造师之二建建设工程法规及相关知识题库及参考答案5
- 部编版:2022年七年级《语文》下册期末试卷与参考答案
- 电子商务运营中的品牌传播策略
- 业主授权租户安装充电桩委托书
- 全飞秒激光近视手术
- 建筑工人实名制管理制度及实施方案
- 《养老护理员》-课件:协助老年人穿脱简易矫形器
- GB 1886.227-2024食品安全国家标准食品添加剂吗啉脂肪酸盐果蜡
- 部编版五年级下册语文作业本答案
- 五年级数学(方程)习题及答案汇编
- 萧条中的生存智慧:越是不景气越要成为引擎般的存在
- 海南矿业股份有限公司选矿实验中心建设项目 环评报告
- htcc制备工艺书籍
- 建立高效的员工沟通与反馈机制
评论
0/150
提交评论