已下架
一、判断文件是否存在
FileExists方法用于判断指定的文件是否存在,若存在则返回True。其语法为:
fso.FileExists(Filepath)
Filepath为文件完整路径,String类型,不能包含有通配符。如果用户有充分的权限,Filepath可以是网络路径或共享名
示例如下:
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
二、移动文件
MoveFile方法用来移动文件,将文件从一个文件夹移动到另一个文件夹。其语法为:
FSO.MoveFile source,destination
参数source必需,指定要移动的文件的路径,String类型。参数destination必需,指定文件移动操作中的目标位置的路径,String类型。
如果Source包含通配符或者destination以路径分隔符结尾,则认为destination是一个路径,否则认为destination的最后一部分是文件名。
如果目标文件已经存在,则将出现一个错误。
source可以包含通配符,但只能出现在它的最后一部分中。
destination参数不能包含通配符。
source或destination可以是相对路径或绝对路径,可以是网络路径或共享名。
MoveFile方法在开始操作前先解析source和destination这两个参数。
实例如下:
Sub 按钮1_Click()
Application.ScreenUpdating = False
Set fso = CreateObject("Scripting.FileSystemObject")
sourcefile = ThisWorkbook.Path & "\txt\*" '将txt文件下所有文件移走,首先需要确认是相关文件时针的存在
destinationfolder = ThisWorkbook.Path & "\tt\" '注意路径格式“tt\”,后面的“\”
fso.movefile sourcefile, destinationfolder
Application.ScreenUpdating = True
End Sub
三、拷贝文件
CopyFile方法用来复制文件,将文件从一个文件夹复制到另一个文件夹。其语法为:
fso.CopyFile Source,Destination [,OverwriteFiles]
参数Source必需,指定要复制的文件的路径和名称,String类型。参数Destination必需,代表复制文件的目标路径和文件名(可选),String类型。参数OverwriteFiles可选,表示是否覆盖一个现有文件的标志,True表示覆盖,False表示不覆盖,Boolean类型,默认值为True。
参数source中源路径可以是绝对路径或相对路径,源文件名可包含通配符但源路径不能。在参数Destination中不能包含通配符。
如果目标路径或文件设置为只读,则无论OverwriteFiles参数的值如何,都将无法完成CopyFile方法。如果参数OverwriteFiles设置为False且Destination指定的文件已经存在,则会产生一个运行时错误“文件已经存在”。如果在复制多个文件时出现错误,CopyFile方法将立即停止复制操作,该方法不具有撤销错误前文件复制操作的返回功能。如果用户有充分的权限,那么source或destination可以是网络路径或共享名。 CopyFile方法可以复制一个保存在特定文件夹中的文件。如果文件夹本身有包含文件的子文件夹,则使用CopyFile方法不能复制这些文件,应该使用CopyFolder方法。
具体实例如下:
Sub 按钮1_Click()
Application.ScreenUpdating = False
Set fso = CreateObject("Scripting.FileSystemObject")
sourcefile = ThisWorkbook.Path & "\txt\*" '将txt文件下所有文件拷贝走,首先需要确认是相关文件时针的存在
destinationfolder = ThisWorkbook.Path & "\tt\" '注意此处不同于movefile,后面的“\”可以省略,只要确实存在该文件夹
fso.copyfile sourcefile, destinationfolder
Application.ScreenUpdating = True
End Sub
四、删除文件
DeleteFile方法删除指定的一个或多个文件。其语法为:
fso.DeleteFile FileSpec[,Force]
参数FileSpec必需,代表要删除的单个文件或多个文件的名称和路径,String类型,可以在路径的最后部分包含通配符,可以为相对路径或绝对路径。如果在FileSpec中只有文件名,则认为该文件在应用程序的当前驱动器和文件夹中。参数Force可选,如果将其设置为True,则忽略文件的只读标志并删除该文件,Boolean类型,默认值为False。
如果指定要删除的文件已经打开,该方法将失败并出现一个“Permission Denied”错误。如果找不到指定的文件,则该方法失败。
如果在删除多个文件的过程中出现错误,DeleteFile方法将立即停止删除操作,即不能删除余下的文件部分。该方法不具有撤销产生错误前文件删除操作的返回功能。
如果用户有充分的权限,源路径或目标路径可以是网络路径或共享名。
注意:DeleteFile方法永久性地删除文件,并不把这些文件移到回收站中。
示例如下:
Sub 按钮1_Click()
Application.ScreenUpdating = False
Set fso = CreateObject("Scripting.FileSystemObject")
strfile = Application.InputBox("请输入文件的完整名称:", "请输入文件的完整名称:", , , , , , 2)
fso.deletefile strfile
Application.ScreenUpdating = True
End Sub
五、GetFileVersion方法
GetFileVersion方法返回文件的版本,貌似很少用到的
fso.GetFileVersion(pathspec) Arguments
pathspec Required. The path (absolute or relative) to a specific file.
Remarks The GetFileVersion method returns a zero-length string ("") if pathspec does not end with the named component.
Note:
The GetFileVersion method works only on the provided path string. It does not attempt to resolve the path, nor does it check for the existence of the specified path.
举例如下:
Sub 按钮1_Click()
Application.ScreenUpdating = False
Set fso = CreateObject("Scripting.FileSystemObject")
strfile = Application.InputBox("请输入文件的完整名称:", "请输入文件的完整名称:", , , , , , 2)
GetFVersion = fso.GetFileVersion(strfile)
If Len(GetFVersion) = 0 Then
MsgBox "无可用的版本信息"
Else
MsgBox GetFVersion
End If
Application.ScreenUpdating = True
End Sub
六、GetFile方法
GetFile方法用来返回一个File对象。
其语法为:fso.GetFile (FilePath)
参数FilePath必需,指定路径和文件名,String类型。可以是绝对路径或相对路径。如果FilePath是一个共享名或网络路径,GetFile确认该驱动器或共享是File对象创建进程的一部分。如果参数FilePath指定的路径的任何部分不能连接或不存在,就会产生错误。
GetFile方法返回的是File对象,而不是TextStream对象。File对象不是打开的文件,主要是用来完成如复制或移动文件和询问文件的属性之类的方法。尽管不能对File对象进行写或读操作,但可以使用File对象的OpenAsTextStream方法获得TextStream对象。
要获得所需的FilePath字符串,首先应该使用GetAbsolutePathName方法。如果FilePath包含网络驱动器或共享,可以在调用GetFile方法之前用DriveExists方法来检验所需的驱动器是否可用。
因为在FilePath指定的文件不存在时会产生错误,所以应该在调用GetFile之前调用FileExists方法确定文件是否存在。
必须用Set语句将File对象赋给一个局部对象变量。
七、文件的各种属性
具体见实例吧,一看就知道,如下:
Sub 按钮1_Click()
Application.ScreenUpdating = False
Set fso = CreateObject("Scripting.FileSystemObject")
strfile = Application.InputBox("请输入文件的完整名称:", "请输入文件的完整名称:", , , , , , 2)
Set objfile = fso.GetFile(strfile)
If fso.fileexists(strfile) Then
sReturn = "文件属性: " & objfile.Attributes & vbCrLf
sReturn = sReturn & "文件创建日期: " & objfile.DateCreated & vbCrLf
sReturn = sReturn & "文件修改日期: " & objfile.DateLastModified & vbCrLf
sReturn = sReturn & "文件大小 " & FormatNumber(objfile.Size / 1024, -1)
sReturn = sReturn & "Kb" & vbCrLf
sReturn = sReturn & "文件类型: " & objfile.Type & vbCrLf
MsgBox sReturn
Else
MsgBox strfile & " :不存在"
End If
Application.ScreenUpdating = True
End Sub
