VBA代码大全011:如何用vba判断文件或文件夹是否存在?

之前我们说过,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

上述两种方法都简单实用,大家可以根据各自的喜好选择。

       

发表评论