之前我们说过,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
上述两种方法都简单实用,大家可以根据各自的喜好选择。


发表评论