UDF to check if a file/folder exists

Asator

Board Regular
Joined
Apr 5, 2010
Messages
186
Why does this code return #Value! ?

Using it like this:
=sdir(cell with path string<CELL path with reference>,"vbDirectory")

Code:
Function sDir(path As String, param As String) As Boolean
Application.Volatile
If Dir(path, param) <> "" Then
    sDir = True
Else
    sDir = False
End If
End Function
 

Excel Facts

What does custom number format of ;;; mean?
Three semi-colons will hide the value in the cell. Although most people use white font instead.
What value(s) are you passing using the param argument?

The 2nd argument in Dir isn't a string, it's an integer.

It's normally represented using a constant with vbDirectory(16) for directory.

For a file you either leave it out or use vbNormal(0), which is the default.
 
Upvote 0
The second argument to the Dir function is not a String value, it is a numerical value. Give this UDF a try instead (it will allow you to still pass the UDF's second argument as a String, the UDF will handle converting it to the correct numerical value)...
Code:
Function sDir(sPath As String, sParam As String) As Boolean
  Dim Setting As Long
  Application.Volatile
  Select Case LCase(sParam)
    Case "vbnormal": Setting = vbNormal
    Case "vbreadonly": Setting = vbReadOnly
    Case "vbhidden": Setting = vbHidden
    Case "vbsystem": Setting = vbSystem
    Case "vbvolume": Setting = vbVolume
    Case "vbdirectory": Setting = vbDirectory
  End Select
  sDir = Dir(sPath, Setting) <> ""
End Function
 
Upvote 0

Forum statistics

Threads
1,224,599
Messages
6,179,827
Members
452,946
Latest member
JoseDavid

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top