Törölt nick Creative Commons License 2012.01.11 0 0 16944

Function Almappák(Főmappa As String)
    Dim Result, FN As String
    
    ReDim Result(0)
    FN = Dir(Főmappa & "*.*", vbDirectory Or vbHidden Or vbSystem)
    While Not FN = ""
        If ((GetAttr(Főmappa & FN) And vbDirectory) = vbDirectory) And (FN <> ".") And (FN <> "..") Then
            Result(UBound(Result)) = FN
            ReDim Preserve Result(UBound(Result) + 1)
        End If
        FN = Dir()
    Wend
    Almappák = Result
End Function

 

 

 

Sub teszt()
    Dim mappa_tömb
    Dim i As Long
    
    mappa_tömb = Almappák(Főmappa:="D:\")
    For i = LBound(mappa_tömb) To UBound(mappa_tömb)
        Range("A" & i + 1) = mappa_tömb(i)
    Next
End Sub

 

A függvényből kiderül, hogy hogyan kell lekérdezni a mappákat, illetve a dinamikus tömb kezelése is. Lényeges, hogy a függvény paramétereként megadott főmappa név végén legyen \ (backslash).

Az Or vbHidden Or vbSystem rész csak akkor kell, ha rejtett és rendszermappákat is látni akarsz.

Kicsit rizikós a használata, mert ha nincs jogosultságod egy adott mappa v. fájl elérésére, akkor a program annál a mappánál v. fájlnál hibára fut. (Ezt persze lehetne kezelni, de az most talán nem cél.)

 

A teszt nevű Sub-ban annyi az érdekes, hogy így lehet hivatkozni az ismeretlen méretű egydimenziós tömb elemeire.

Előzmény: Or Kán (16943)