Function to Check if File or Directory (Folder) exists

|

Introduction:
When creating routines, it is commonly helpful to check if a file or directory (folder) exists before attempting to perform some action. Searching the internet will yield several examples of doing either, but this is a routine that I wrote in order to have one routine to test either.

Macro Purpose:

  1. Check if the supplied path to a file or directory (folder) exists.

Examples of where this function shines:

  1. When you need to check if a file OR directory exists before you attempt to so something with it (such as load a file).

Macro Weakness(es):

  1. None identified at this time.

Versions Tested:
This function has been tested with Excel 97, Excel 2003, and Excel 2007, and should also work with Excel 2000 and Excel 2002 (XP) without any modifications.

VBA Code Required:

  1. Place the following code in a standard module of the workbook you wish to use it in.

Public Function FileFolderExists(strFullPath As String) As Boolean
'Author       : Ken Puls (www.excelguru.ca)
'Macro Purpose: Check if a file or folder exists

    On Error GoTo EarlyExit
    If Not Dir(strFullPath, vbDirectory) = vbNullString Then FileFolderExists = True
    
EarlyExit:
    On Error GoTo 0

End Function

How to use the code:

  1. Call it from another routine, as shown below.
  2. Please note that you should provide the full file path to the file/folder as the argument.
  3. You may supply or ignore the trailing \ on a directory if you choose. It will work either way.

Public Sub TestFolderExistence()
'Author       : Ken Puls (www.excelguru.ca)
'Macro Purpose: Test if directory exists

    If FileFolderExists("F:\Templates") Then
        MsgBox "Folder exists!"
    Else
        MsgBox "Folder does not exist!"
    End If

End Sub

Public Sub TestFileExistence()
'Author       : Ken Puls (www.excelguru.ca)
'Macro Purpose: Test if directory exists

    If FileFolderExists("F:\Test\TestWorkbook.xls") Then
        MsgBox "File exists!"
    Else
        MsgBox "File does not exist!"
    End If

End Sub

Acknowledgements:
Thanks to Rory Byrne for pointing out a more efficient way to accomplish the above using the Dir function, as well as Richard Barrett for pointing out that a previous incarnation would throw an error when testing a removable drive.