之前我们说过,vba最经常用来干的就是批量处理文件。
在遍历文件或文件夹的过程中,有时候我们需要更新文件或者往文件夹中加入文件,这时候就会遇到需要事先判断文件或文件夹是否存在的情况。
在vba中处理文件或文件夹,最常用的两个方法一是用FileSystemObject对象遍历,二是用dir函数遍历。
这里也分别介绍两种方法判断文件、文件夹是否存在。
一、用FileSystemObject对象判断文件、文件夹是否存在
FileSystemObject对象 直接提供了两个方法FolderExists 和 FileExists
分别判断文件夹、文件是否存在,使用方法也很简单,直接将要判断的文件夹或文件路径传入即可。
代码如下:
Sub 判断文件夹_文件是否存在() 'QQ:1722187970,微信:xycgenius,公众号:水星excel Dim sFlie As String '文件 sFlie = "d:\abc.txt" Dim sFolder As String '文件夹 sFolder = "d:\abc" Dim oFSO As Object Set oFSO = CreateObject("Scripting.FileSystemObject") With oFSO '如果存在指定的文件 If .FileExists(sFlie) Then '操作代码 End If '如果存在指定的文件 If .FolderExists(sFolder) Then '操作代码 End If End With End Sub
二、用dir函数判断文件、文件夹是否存在
在vba中也可以使用内置函数dir快速地判断一个文件或文件夹是否存在。
dir函数的语法如下:
Dir[(pathname[, attributes])]
其中第一个参数pathname表示要判定的文件夹或者文件的路径,第二个参数为文件的属性。
如果返回值为空,则表示不存在该文件或者该文件夹。
比如要判断C盘根目录下是否有2.txt这个文件,可以使用如下的代码:
Sub 判断文件是否存在() Dim sResult As String Dim sPath As String sPath = "C:\2.txt" sResult = Dir(sPath) If Len(sResult) = 0 Then MsgBox sPath & "不存在" End If End Sub
如果要判断文件夹是否存在,需要将dir函数的第二个参数设置为16(vbDirectory)。
比如,要判断是否有“c:\test” 这个路径,可以使用如下的代码:
Sub 判断文件夹是否存在() Dim sResult As String Dim sPath As String sPath = "C:\test" sResult = Dir(sPath, vbDirectory) If Len(sResult) = 0 Then MsgBox sPath & "不存在" End If End Sub
上述两种方法都简单实用,大家可以根据各自的喜好选择。
发表评论