VBA Dir Function

Dir Description

Returns the first filename that matches the pathname and attributes specified.

Simple Dir Examples

MsgBox Dir("")

This will return the first file name on the current path.

Dir Syntax

In the VBA Editor, you can type  “Dir(” to see the syntax for the Dir Function:

The Dir function contains 2 arguments:

PathName: [Optional] A string expression representing a directory/folder/drive.

Attribute: [Optional] Specifies file attributes. If omitted, returns files that match pathname but have no attributes.

The Attribute argument settings are:

Constant Value Description
vbNormal 0 (Default) Specifies files with no attributes.
vbReadOnly 1 Specifies read-only files in addition to files with no attributes.
vbHidden 2 Specifies hidden files in addition to files with no attributes.
vbSystem 4 Specifies system files in addition to files with no attributes. Not available on the Macintosh.
vbVolume 8 Specifies volume label; if any other attribute is specified, vbVolume is ignored. Not available on the Macintosh.
vbDirectory 16 Specifies directories or folders in addition to files with no attributes.
vbAlias 64 Specified file name is an alias. Available only on the Macintosh.

Examples of Excel VBA Dir Function

To list the folders&files on C drive, you can use the following code.

Sub Dir_Example()
    Dim fileName    As String
    Dim fullName    As String
    Dim rng         As Range
    Dim i           As Integer

    Set rng = Range("A1")
    
    fileName = Dir("C:\", vbDirectory)
    i = 1
    
    Do
        fullName = "C:\" & fileName
        rng.Offset(i, 0) = fileName
        rng.Offset(i, 1) = FileDateTime(fullName)
        rng.Offset(i, 2) = FileLen(fullName)
        rng.Offset(i, 3) = GetAttr(fullName)
        
        
        fileName = Dir
        If fileName = "" Then Exit Do
        i = i + 1
    Loop
End Sub

The result will be similar with the following.

VBA Dir Function in Access VBA

The VBA Dir function works in Access VBA in the same way as it does in Excel VBA.

Function CreateDirectory(strP As String) As Boolean
   If Len(Dir(strP, vbDirectory)) = 0 Then
      MkDir strP
   End If
   CreateDirectory = True
   Exit Function
ending:
   CreateDirectory = False
End Function