excel学习库

excel表格_excel函数公式大全_execl从入门到精通

Excel VBA 有关Fso(File System Object)资料汇总之三

此文针对文件夹相关操作进行解读,欢迎在评论区留言交流!一、判断文件夹是否存在 FolderExists方法可以判断指定的文件夹是否存在,若存在则返回True。其语法为: fso.FolderExists(FolderSpec) 参数FolderSpec指定文件夹的完整路径,String类型,不能包含通配符。 如果用户有充分的权限,FolderSpec可以是网络路径或共享名,例如: If fso.FileExists ("\\NTSERV1\d$\TestPath\") Then 示例如下: Sub 按钮1_Click() Application.ScreenUpdating = False Set fso = CreateObject("Scripting.FileSystemObject") strfile = Application.InputBox("请输入文件的完整名称:", "请输入文件的完整名称:", , , , , , 2) If fso.fileexists(strfile) Then MsgBox strfile & " :存在" Else MsgBox strfile & " :不存在" End If Application.ScreenUpdating = True End Sub
二、移动文件夹 MoveFolder方法用来移动文件夹,将文件夹及其文件和子文件夹一起从某个位置移动到另一个位置。其语法为: fso.MoveFolder source,destination 参数Source指定要移动的文件夹的路径,String类型。参数destination指定文件夹移动操作中目标位置的路径,String类型。 Source必须以通配符或非路径分隔符结束,可以使用通配符,但必须出现在最后一部分中。destination不能使用通配符。除非不允许使用通配符,否则源文件夹中所有的子文件夹和文件都被复制到destination指定的位置,也就是说MoveFolder方法是递归的。 如果destination用路径分隔符结束或者source用通配符结束,MoveFolder就认为source中指定的文件夹存在于destination中。例如,假设有如下文件夹结构: MoveFolder "C:\Rootone\*","C:\RootTow\" 产生如下文件夹结构: MoveFolder "C:\Rootone","C:\RootTwo\" 产生如下文件夹结构: Source和destination可以为绝对路径或相对路径,可以为网络路径或共享名。 MoveFile方法在开始操作前先解析source和destination这两个参数。 Sub 按钮1_Click() Application.ScreenUpdating = False Set fso = CreateObject("Scripting.FileSystemObject") sfolder = ThisWorkbook.Path & "\tt" dfolder = ThisWorkbook.Path & "\txt\" If Not fso.folderexists(sfolder) Then MsgBox sfolder & " :不存在" Exit Sub End If If Not fso.folderexists(dfolder) Then MsgBox dfolder & " :不存在" Exit Sub End If fso.movefolder sfolder, dfolder Application.ScreenUpdating = True End Sub 三、拷贝文件夹 CopyFolder方法用于复制文件夹,即将一个文件夹的内容(包括其子文件夹)复制到其他位置。其语法为: fso.CopyFolder Source,Destination[,OverwriteFiles] 参数Source必需,指定要复制的文件夹的路径和文件夹名,String类型,必须使用通配符或者非路径分隔符来结束。参数Destination必需,指定文件夹复制操作的目标文件夹的路径,String类型。参数OverwriteFiles可选,表示是否被覆盖一个现有文件的标志,True表示覆盖,False表示不覆盖,Boolean类型。 通配符只能在参数Source中使用,但是只能放在最后的组件中。在参数Destination中不能使用通配符。 除非不允许使用通配符,否则就可以把源文件夹中的所有子文件夹和文件都复制到Destination指定的文件夹中,也就是说CopyFolder方法是递归的。 如果参数Destination以一个路径分隔符结束或者参数Source以一个通配符结束,CopyFolder方法就认为参数Source中的指定的文件夹存在于参数Destination中,否则就创建这样一个文件夹。例如,假设有如下的文件夹结构: CopyFolder "C:\Rootone\*","C:\RootTwo" 产生如下的文件夹结构: CopyFolder "C:\Rootone","C:\RootTwo\" 产生如下的文件夹结构: 如果参数Destination指定的目标路径或任意文件被设置成只读属性,则不论OverwriteFiles的值如何,CopyFolder方法者将失效。 如果OverwriterFiles设置为False,而参数Source指定的源文件夹或任何文件存在于参数Destination中,将产生运行时错误“文件已经存在”。 如果在复制多个文件夹时出现错误,CopyFolder方法立即停止复制操作,不再复制余下要复制的文件。该方法不具有撤销产生错误前文件复制操作的返回功能。 如果用户有充分的权限,source或destination都可以是网络路径或共享名,例如: CopyFolder "C:\Rootone","\\NTSERV1\d$\RootTwo\" Sub 按钮1_Click() Application.ScreenUpdating = False Set fso = CreateObject("Scripting.FileSystemObject") sfolder = ThisWorkbook.Path & "\tt" dfolder = ThisWorkbook.Path & "\txt\" If Not fso.folderexists(sfolder) Then MsgBox sfolder & " :不存在" Exit Sub End If If Not fso.folderexists(dfolder) Then MsgBox dfolder & " :不存在" Exit Sub End If fso.copyfolder sfolder, dfolder Application.ScreenUpdating = True End Sub 四、删除文件夹 DeleteFolder方法用于删除指定的文件夹及其所有的文件和子文件夹。其语法为: fso.DeleteFolder FileSpec[,Force] 参数FileSpec必需,指定要删除的文件夹的名称和路径,String类型。在参数FileSpec中,可以在路径的最后部分包含通配符,但不能用路径分隔符结束,可以为相对路径或绝对路径。 参数Force可选,Boolean类型,如果设置为True,将忽略文件的只读标志并删除这个文件。默认为False。如果参数Force设置为False并且文件夹中的任意一个文件为只读,则该方法将失败。如果找不到指定的文件夹,则该方法失败。 如果指定的文件夹中有文件已经打开,则不能完成删除操作,且产生一个“Permisson Denied”错误。DeleteFolder方法删除指定文件夹中的所有内容,包括其他文件夹及其内容。 如果在删除多个文件或文件夹时出现错误,DeleteFolder方法将立即停止删除操作,即不能删除余下的文件夹或文件。该方法不具有撤销产生错误前文件夹删除操作的返回功能。 DeleteFolder方法永久性删除文件夹,并不把它们移到回收站中。 如果用户有充分的权限,源路径和目标路径可以是网络路径或共享名,例如: DeleteFolder "\\RootTest" 示例如下: Sub 按钮1_Click() Application.ScreenUpdating = False Set fso = CreateObject("Scripting.FileSystemObject") sfolder = ThisWorkbook.Path & "\txt\tt" If Not fso.folderexists(sfolder) Then MsgBox sfolder & " :不存在" Exit Sub End If fso.deletefolder sfolder Application.ScreenUpdating = True End Sub 五、创建文件夹 CreateFolder方法用于在指定的路径下创建一个新文件夹,并返回其Folder对象。其语法为: fso.CreateFolder (Path) 参数Path必需,为一个返回要创建的新文件夹名的表达式,String类型。Path指定的路径可以是相对路径也可以是绝对路径,如果没有指定路径则使用当前驱动器和目录作为路径。在新的文件夹名中不能使用通配符。 如果参数Path指定的路径为只读,则CreateFolder方法将失败;如果参数Path指定的文件夹已经存在,就会产生运行时错误“文件已经存在”。如果用户有充分的权限,则参数Path可以指定为网络路径或共享名,例如: Fso.CreateFolder "\\NTSERV1\RootTest\newFolder" 示例如下: Sub 按钮1_Click() Application.ScreenUpdating = False Set fso = CreateObject("Scripting.FileSystemObject") sfolder = ThisWorkbook.Path & "\thisfolder" If fso.folderexists(sfolder) Then MsgBox sfolder & " :已经存在" Exit Sub End If fso.CreateFolder sfolder Application.ScreenUpdating = True End Sub 六、GetAbsolutePathName方法 将相对路径转变为一个全限定路径(包括驱动器名),返回一个字符串,包含一个给定的路径说明的绝对路径。其语法为: fso.GetAbsolutePathName (Path) 参数Path必需,代表路径说明,String类型。 “.”返回当前文件夹的驱动器名和完整路径。“..”返回当前文件夹的父文件夹的驱动器名和路径。“filename”返回当前文件夹中的文件的驱动器名、路径及文件名。 所有相对路径名均以当前文件夹为基准。 如果没有明确地提供驱动器作为Path的一部分,就以当前驱动器作为Path参数中的驱动器。在Path中可以包含任意个通配符。 对于映射网络驱动器和共享而言,这种方法不能返回完整的网络地址,而是返回全限定的本地路径和本地驱动器名。 GetAbsolutePathName不能检验指定路径中是否存在某个给定的文件或文件夹 Sub 按钮1_Click() Application.ScreenUpdating = False Set fso = CreateObject("Scripting.FileSystemObject") sfolder = "thisfolder" If fso.folderexists(sfolder) Then MsgBox sfolder & " :已经存在" Exit Sub End If str1 = fso.GetAbsolutePathName(sfolder) MsgBox sfolder & " :的绝对路径为: " & str1 Application.ScreenUpdating = True End Sub 七、GetParentFolderName方法 返回给定路径中最后部分前的文件夹名,其语法为: fso.GetParentFolderName (Path) 参数Path必需,指定路径说明,String类型。 如果从Path中不能确定父文件夹名,就返回一个零长字符串(””)。Path可以为相对路径或绝对路径。可以是网络驱动器或共享。 GetParentFolderName方法不能检验Path的某个部分是否存在。 GetParentFolderName方法认为Path中不属于驱动器说明的那部分字符串除了最后一部分外余下的字符串就是父文件夹。除此之外它不做任何其他检测,更像是一个字符串解析和处理例程而不是与对象处理有关的例程。 Sub 按钮1_Click() Application.ScreenUpdating = False Set fso = CreateObject("Scripting.FileSystemObject") sfolder = ThisWorkbook.Path & "\tt\" If Not fso.folderexists(sfolder) Then MsgBox sfolder & " :不存在" Exit Sub End If str1 = fso.GetParentFolderName(sfolder) MsgBox sfolder & " :父路径: " & str1 Application.ScreenUpdating = True End Sub 八、GetSpecialFolder方法 GetSpecialFolder方法返回操作系统文件夹路径,其中0代表Windows文件夹,1代表System(系统)文件夹,2代表Temp(临时)文件夹。其语法为: fso.GetSpecialFolder (SpecialFolder) 参数SpecialFolder必需,为特殊的文件夹常数,表示三种特殊系统文件夹中其中一个的值。 可以使用Set语句将Folder对象赋给一个局部对象变量,但是如果只对检索特殊的文件夹感兴趣,就可以使用下列语句来实现: sPath=fso.GetSpecialFolder (iFolderConst) 或: sPath=fso.GetSpecialFolder (iFolderConst).Path 由于Path属性是Folder对象的缺省属性,所认第一个语句有效。因为不是给一个对象变量赋值,所以赋给sPath的值是缺省的Path属性值,而不是对象引用。 示例 Sub 按钮1_Click() Application.ScreenUpdating = False Dim strWindowsFolder As String Dim strSystemFolder As String Dim strTempFolder As String Set fso = CreateObject("Scripting.FileSystemObject") strWindowsFolder = fso.GetSpecialFolder(0) strSystemFolder = fso.GetSpecialFolder(1) strTempFolder = fso.GetSpecialFolder(2) MsgBox strWindowsFolder & vbCrLf & strSystemFolder & vbCrLf _ & strTempFolder, vbInformation + vbOKOnly, "Special Folders" Application.ScreenUpdating = True End Sub 九、GetFolder方法 GetFolder方法返回Folder对象。其语法为: fso.GetFolder (FolderPath) 参数FolderPath必需,指定所需文件夹的路径,String类型,可以为相对路径或绝对路径。如果FolderPath是共享名或网络路径,GetFolder确认该驱动器或共享是File对象创建进程的一部分。如果FolderPath的任何部分不能连接或不存在,就会产生一个错误。 要获得所需的Path字符串,首先应该使用GetAbsolutePathName方法。如果FolderPath包含一个网络驱动器或共享,可以在调用GetFolder方法之前使用DriveExists方法确认指定的驱动器是否可用。由于GetFolder方法要求FolderPath是一个有效文件夹的路径,所以应调用FolderExists方法来检验FolderPath是否存在。 必须使用Set语句将Folder对象赋给一个局部对象变量 十、获取文件夹有关信息 获取当前文件所在文件夹的信息 Sub 按钮1_Click() Application.ScreenUpdating = False Dim sReturn As String Set fso = CreateObject("Scripting.FileSystemObject") Set folder1 = fso.GetFolder(ThisWorkbook.Path & "\") sReturn = "文件夹属性: " & folder1.Attributes & vbCrLf '获取最近一次访问的时间 sReturn = sReturn & "创建时间: " & folder1.Datecreated & vbCrLf sReturn = sReturn & "最后访问时间: is " & folder1.DateLastAccessed & vbCrLf '获取最后一次修改的时间 sReturn = sReturn & "最后修改时间: " & folder1.DateLastModified & vbCrLf '获取文件夹的大小 sReturn = sReturn & "文件夹大小: " & FormatNumber(folder1.Size / 1024, 0) sReturn = sReturn & "Kb" & vbCrLf '判断文件或文件夹类型 sReturn = sReturn & "类型为: " & folder1.Type & vbCrLf MsgBox sReturn Application.ScreenUpdating = True End Sub

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接