DIR([pathname] [,attributes])

Returns the name of a file or directory matching a pattern or attribute (Variant / String).

pathname(Optional) The full path of a file or directory (String).
attributes(Optional) A vbFileAttribute constant specifying the file attributes to (Integer):
0 = vbNormal (default) (just File Names)
1 = vbReadOnly
2 = vbHidden
4 = vbSystem
8 = vbVolume (Macintosh only)
16 = vbDirectory (File Names and Folders)
64 = vbAlias (Macintosh only)

* This function supports wildcards (? and *).
* The "pathname" must be provided the first time this function is called, otherwise an error will occur.
* The "pathname" can include a directory and drive.
* If "pathname" cannot be found, then a zero length string ("") is returned.
* The "attribute" can be a constant or a numerical expression.
* If "attributes" is left blank, then 0 is used. These are files that match "pathname" but have no attributes.
* To iterate over all the files in a folder, specify an empty string for the "pathname"
* To get additional file names, call this function again with no arguments.
* Any subsequent calls must specify a "pathname" otherwise an error will occur.
* When no more files exist an empty string is returned.
* File names are not necessarily returned in any particular order so it may be worth adding them to an array and sorting them before you display them.
* The vbAlias and vbVolumn attributes are only available on the Macintosh.
* You cannot call this function recursively to display sub folders.
* If "attribute" > 256, then it is assumed to be a MacID value.
* You can use the DIR$ function if you want to return a String data type instead of a Variant data type.
* You can use the MKDIR function to create new directories.
* You can use the GETATTR function to return the attributes of a given file or directory.
* If you are using SharePoint then you must use forward slashes instead of backward slashes between the subfolders.
* The equivalent .NET function is Microsoft.VisualBasic.FileSystem.Dir
* For more examples refer to the pages under Files & Directories > Code Snippets
* For the Microsoft documentation refer to docs.microsoft.com

' save one file in the folder "C:\temp\" and return the filename
' using this function once returns the first name
Dim sFileName as String
sFileName = Dir("C:\temp\test.ini")
Debug.Print sFileName 'test.ini
sFileName = Dir("C:\temp\*ini") 'using a wildcard
Debug.Print sFileName 'test.ini
sFileName = Dir("C:\temp\missing.ini") 'file does not exist
Debug.Print sFileName '"" empty string

' save three files in the folder "C:\temp\"
' to get the names of the second and third files you need to call the function again
Dim sFileName As String
sFileName = Dir("C:\temp\")
Do While (sFileName <> "")
   Debug.Print sFileName
   sFileName = Dir()


© 2022 Better Solutions Limited. All Rights Reserved. © 2022 Better Solutions Limited Top