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.