Funkcja Dir

Zwraca nazwę pliku, katalogu lub wszystkie pliki i katalogi na dysku lub w katalogu odpowiadającym określonej ścieżce wyszukiwania.

Składnia:

Dir [(tekst As String) [, atrybut As Integer]]

Zwracana wartość:

Ciąg

Parametry:

Tekst: Dowolny ciąg określający ścieżkę wyszukiwania, katalog lub plik. Ten argument może być określony wyłącznie przy pierwszym wywołaniu funkcji Dir. W razie potrzeby ścieżkę można także wprowadzić w notacji URL.

Atrybut: Dowolne wyrażenie w postaci liczby całkowitej określające binarnie atrybuty pliku. Funkcja Dir zwraca pliki lub katalogi wyłącznie z atrybutami pasującymi do wzorca. Funkcja pozwala na łączenie kilku atrybutów poprzez dodawanie wartości atrybutów:

0 : Pliki normalne.

16 : Zwraca tylko nazwę katalogu.

Atrybut ten służy do sprawdzenia, czy plik lub katalog istnieje, lub określenia wszystkich plików i folderów w katalogu.

Aby sprawdzić, czy plik istnieje, należy wprowadzić jego pełną ścieżkę i nazwę. Jeśli plik lub katalog nie istnieje, funkcja Dir zwraca ciąg o długości zerowej ("").

Aby wygenerować listę istniejących plików w określonym katalogu, należy postępować zgodnie z poniższą procedurą: Przy pierwszym wywołaniu funkcji Dir należy określić pełną ścieżkę wyszukiwania plików, na przykład "D:\Files\*.ods". Jeśli ścieżka jest prawidłowa i zostanie odnaleziony co najmniej jeden plik, funkcja Dir zwraca nazwę pierwszego pliku odpowiadającego ścieżce wyszukiwania. Aby uzyskać kolejne pliki odpowiadające ścieżce wyszukiwania, należy ponownie wywołać funkcję Dir, tym razem bez argumentów.

Aby uzyskać tylko katalogi, należy użyć parametru atrybutu. Tak samo należy postąpić w celu określenia nazwy woluminu (np. partycji dysku twardego)

Kody błędów:

5 Nieprawidłowe wywołanie procedury

53 Plik nie został odnaleziony

Przykład:

Sub ExampleDir

' Wyświetla wszystkie pliki i katalogi

Dim sPath As String

Dim sDir As String, sValue As String

    sDir="Katalogi:"

    sPath = CurDir

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

    Do

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

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

                ' Katalogi

                sDir = sDir & chr(13) & sValue

            End If

        End If

        sValue = Dir$

    Loop Until sValue = ""

    MsgBox sDir,0,sPath

End Sub