Spis treści

# 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 [(PathName As String [, Attributes As Integer])]

### Typ zwracany:

Ciąg

### Parametry:

PathName: Dowolne wyrażenie w postaci ciągu określające ścieżkę wyszukiwania, katalog lub plik. Ten argument można określić tylko przy pierwszym wywołaniu funkcji Dir. Jeśli chcesz, możesz wprowadzić ścieżkę w adresie URL.

Attributes: dowolne wyrażenie całkowite określające bitowe atrybuty pliku. Funkcja Dir zwraca tylko pliki lub katalogi pasujące do określonych atrybutów. Możesz połączyć kilka atrybutów, dodając 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

Tematy pokrewne

Funkcja CurDir

Funkcja CompatibilityMode()

Instrukcja Option VBASupport