Функція Dir

Повертає ім'я файлу, каталогу або файлів і каталогів на диску або в каталозі, відповідних вказаному шляху пошуку.

Синтаксис:

Dir [(Текст As String) [, Атрибут As Integer]]

Значення, що повертається:

Рядок

Параметри:

Текст: будь-який вираз типу String, який вказує шлях пошуку, каталог або файл. Даний аргумент може бути зазначений, тільки коли функція Dir викликається в перший раз. За необхідності можна ввести шлях в URL-нотації.

Атрибут: будь-який цілий вираз, що вказує побітові атрибути файлу. Функція Dir повертає тільки файли або каталоги, які відповідають зазначеним атрибутам. Можна поєднувати кілька атрибутів, додаючи значення атрибутів:

0 : Звичайні файли.

16 : Повертає ім'я каталогу.

Використовуйте цей параметр, щоб перевірити, чи існує файл або каталог, або щоб визначити всі файли і теки в конкретному каталозі.

Щоб перевірити, чи існує файл, введіть повний шлях та ім'я файлу. Якщо ім'я файлу або каталогу не існує, функція Dir повертає рядок нульової довжини ("").

Щоб створити список файлів, наявних у певній теці, зробіть так: спочатку викличте функцію Dir, зазначивши повний шлях для пошуку файлів, наприклад, "D:\Files\*.ods". Якщо шлях коректний і буде знайдено принаймні один файл, функція 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