Минус только один - выдаются не только папки, но и файлы.
Решение - проверять атрибуты найденного файла:
- Код: Выделить всё
Dim s As String
s = Dir("c:\", vbDirectory Or vbHidden Or vbSystem)
Do While Len(s)
Debug.Print s, GetAttr("c:\" & s) And vbDirectory
s = Dir(, vbDirectory Or vbHidden Or vbSystem)
Loop
Правда, GetAttr над файлами hiberfil.sys, pagefile.sys вызовет ошибку, поэтому надо ещё и обработку ошибок добавить.
З.Ы.
Как более правильный, но немного более сложный вариант, можно использовать API FindFirstFile, FindNextFile, и в WIN32_FIND_DATA проставлять нужный атрибут (FILE_ATTRIBUTE_DIRECTORY).