Функция Dir

Връща името на файл, директория или всички файлове и директории в устройство или директория, които отговарят на зададения път за търсене.

Синтаксис:

Dir [(Text As String) [, Attrib As Integer]]

Връщана стойност:

String

Параметри:

Text: низов израз, задаващ пътя за търсене – директория или файл. Този аргумент може да бъде зададен само при първото изикване на функцията Dir. Ако желаете, можете да въведете пътя във вид на URL.

Attrib: целочислен израз, задаващ битовете за атрибутите на файла. Функцията Dir връща само файлове или директории, отговарящи на зададените атрибути. Можете да комбинирате няколко атрибута, като съберете стойностите им:

0: нормални файлове

16: връща само името на директорията

Използвайте този атрибут, за да проверите дали съществува файл или директория или да намерите всички файлове и папки в определена директория.

За да проверите дали файл съществува, въведете пълния път и името на файла. Ако името на файл или директория не съществува, функцията Dir връща празен низ ("").

За да получите списък на всички съществуващи файлове в определена директория, направете следното: първо извикайте функцията Dir, като зададете пълния път за търсене на файловете, например "D:\Files\*.odt". Ако пътят е правилен и търсенето открие поне един файл, функцията Dir връща името на първия файл, който отговаря на пътя за търсене. За да получите още имена на файлове, които отговарят на пътя, извикайте Dir отново, но без аргументи.

За да получите само директориите, използвайте параметъра за атрибути. Същото важи и ако искате да откриете името на даден том (например дял от твърд диск).

Кодове за грешка:

5 Невалидно извикване на процедура

53 Файлът не е намерен

Пример:

Sub ExampleDir

' Показва всички файлове и директории

Dim sPath As String

Dim sDir As String, sValue As String

    sDir = "Директории:"

    sPath = CurDir

    sValue = Dir$(sPath + getPathSeparator + "*",16)

    Do

        If sValue <> "." And sValue <> ".." Then

            If (GetAttr( sPath + getPathSeparator + sValue) And 16) >0 Then

                ' Получаване на директориите

                sDir = sDir & chr(13) & sValue

            End If

        End If

        sValue = Dir$

    Loop Until sValue = ""

    MsgBox sDir,0,sPath

End Sub