Съдържание
Индекс 🔎︎

# Функция Dir

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

### Синтаксис:

    Dir [(PathName As String [, Attributes As Integer])]

### Резултат:

String

### Параметри:

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

Attributes: целочислен израз, задаващ битовете за атрибутите на файла. Функцията 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

Теми, свързани с показаната

Функция CurDir

Функция CompatibilityMode()

Оператор Option VBASupport