Lista podfolderów w katalogu

W jaki sposób wylistować listę podfolderów w katalogu?  Jednym z lepszych sposobów jest wykorzystanie metody FileSystemObject.GetFolder

Załóżmy, że mamy taki taki układ folderów (przykład z mojego dysku):

kliknij, aby powiększyć

Katalog z listą podfolderów można wylistować w komórkach Excela do takiej postaci:

kliknij, aby powiększyć

Przykładowy kod może wyglądać tak:

Public Sub Foldery()
Dim FSO As Object
Dim Folder As Object
Dim Podfolder As Object
Dim JNazwa As String
Dim NF As String
Dim i As Long
Dim k As Long
Set FSO = CreateObject(„Scripting.FileSystemObject”)
Set Folder = FSO.GetFolder(Range(„A2”).Value)
i = 2
For Each Podfolder In Folder.SubFolders
i = i + 1
JNazwa = Podfolder.Name
Cells(i, 2) = JNazwa
i = Podfoldery(Folder & „\” & JNazwa, 3, i)
Next Podfolder
End Sub
_________________________________

Public Function Podfoldery(JF As String, k As Long, w As Long)
Dim FSOP As Object
Dim FolderP As Object
Dim PodfolderP As Object
Dim JNazwaP As String
Set FSOP = CreateObject(„Scripting.FileSystemObject”)
Set FolderP = FSOP.GetFolder(JF)
For Each PodfolderP In FolderP.SubFolders
w = w + 1
JNazwaP = PodfolderP.Name
Cells(w, 3) = JNazwaP
Next PodfolderP
Podfoldery = w
Set FolderP = Nothing
Set FSOP = Nothing
End Function

Oczywiście kod można rozbudować do wylistowania kolejnych poziomów. 
Jeśli trzeba – mogę pomóc. 


A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

 

Właściwości folderu

GetFolder to jedna z częściej wykorzystywanych metod obiektu FileSystem.Object.

Ma jeden parametr wejściowy:

    • folderspec– ścieżka do konkretnego obiektu.
      Argument obowiązkowy.

Za pomocą tej metody można odczytać następujące właściwości folderu:

    • Name – nazwa folderu.
    • Path – ścieżka do folderu.
    • Size– rozmiar wszystkich plików folderze.
    • DateCreated– data utworzenia.
    • DateLastModified– data ostatniej modyfikacji.
    • DateLastAccess– data ostatniego otwarcia.
    • ParentFolder– folder nadrzędny.
    • Files– kolekcja plików w folderze.
    • SubFolders– kolekcja podfolderów.

Wyrażenie MkDir

MkDir to wyrażenie VBA tworzące na dysku nowy katalog. Posiada 1 argument:

    • Path– pełna nazwa folderu, który chcemy utworzyć

Jeżeli katalog o tej nazwie już istnieje wystąpi błąd wykonania 75

Przykładowy kod VBA może wyglądać tak:

Public Sub NowyKatalog()
If Dir(„C:\ABCD”, vbDirectory) = „” Then
MkDir („ABCD”)
End If
End Sub

 

 

FileSystem.Object

Scripting.FileSystemObject to obiekt służący do zarządzania plikami i folderami. Wprawdzie w kodzie VBA są dostępne proste i przyjemne funkcje Dir, MkDir itp., ale przy odwołaniach do folderów sieciowych niestety często zawodzą. Wówczas pozostaje wykorzystanie właśnie obiektu FileSystemObject, popularnie nazywanym FSO.

Dostępne są tu następujące właściwości i metody:

    • GetDrive – informacje o napędzie (dysku)
    • GetFolder – informacje o folderze
    • GetFile– informacje o pliku
    • CreateFolder – tworzenie folderu
    • CreateFile – tworzenie pliku
    • DeleteFolder – usuwanie folderu
    • DeleteFile – usuwanie pliku
    • CopyFolder – kopiowanie folderu
    • CopyFile – kopiowanie pliku
    • MoveFolder – przenoszenie folderu
    • MoveFile – przenoszenie pliku

To tylko te podstawowe, jest ich więcej. I każda będzie tematem notki.


Funkcja Dir

Funkcja DIR() to funkcja VBA zwracająca wartość tekstową będącą nazwą pliku lub folderu. Bardzo pożyteczna  i często stosowana.

Argumenty funkcji to:

    • PathName– wartość tekstowa odpowiadająca pełnej nazwie pliku lub folderu
    • Attributes – wartość stała lub liczbowa określająca wyszukiwane pliki. Składa się ona z sumy wartości liczbowych z tabeli poniżej.

Atrybuty mogą przyjmować wartości:

Stała Wartość liczbowa Opis
vbNormal 0 Pliki bez właściwości. Wartość domyślna.
vbReadOnly 1 Pliki bez właściwości i pliki tylko do odczytu
vbHidden 2 Pliki bez właściwości i pliki ukryte
vbSystem 4 Pliki bez właściwości i pliki systemowe
vbVolume 8 Etykiety
vbDirectory 16  Foldery

W praktycznym wykorzystaniu funkcja Dir najczęściej stosowana jest do sprawdzania czy istnieje dany folder lub plik oraz do sporządzania listy takich plików.


Kurs Excel - makra i VBA dla początkujących