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.
Jak szybko przenieść czyli usunąć w jednym miejscu i przenieść w inne miejsce na dysku) plik? Jednym ze sposobów jest wykorzystanie obiektu FileSystem.Object.
Służy do tego metoda FileSystem.Object.MoveFile Ma ona kilka parametrów wejściowych:
Object – nazwa obiektu zdefiniowanego jako obiekt FSO. Argument obowiązkowy.
Source – nazwa pliku do skopiowania. Argument obowiązkowy, ale dozwolone są znaki zastępcze w nazwie.
Destination – nazwa pliku po przeniesieniu. Argument obowiązkowy.
Zarówno stara jak i nowa nazwa pliku musi być pełna czyli z z dokładnym podaniem dysku i katalogu.
Przykładowy kod może wyglądać tak:
Public Sub PrzeniesPlik() Dim FSO As Object Dim StaryPlik As String
Dim NowyPlik As String
StaryPlik = „C:\Folder1\plik.png”
NowyPlik = „C:\Folder2\plik.png” Set FSO = CreateObject(„Scripting.FileSystemObject”)
FSO.MoveFile StaryPlik, NowyPlik Set FSO = Nothing End Sub
Warto też wcześniej zwrócić uwagę na sprawdzenie, czy plik do przeniesienia istnieje. Jeżeli nie, to w trakcie wykonywania procedury wystąpi błąd wykonania 53.
Jak szybko skopiować dowolny plik? Sposobów jest kilka, jednym z nich jest wykorzystanie obiektu FileSystem.Object.
Służy do tego metoda FileSystem.Object.Copy Ma ona kilka parametrów wejściowych:
Object – nazwa obiektu zdefiniowanego jako obiekt FSO. Argument obowiązkowy.
Source – nazwa pliku do skopiowania. Argument obowiązkowy, ale dozwolone są znaki zastępcze w nazwie.
Destination – nazwa pliku po skopiowaniu. Argument obowiązkowy.
Overwrite – opcjonalny argument typu Boolean. Jeżeli kopiowany plik ma być zapisany pod nazwą już istniejącego pliku, wartość False nie skopiuje pliku. Domyślna wartość True, zastąpi plik plikiem kopiowany.
Przykładowy kod kopiujący plik może wyglądać tak:
Public Sub KopiujPlik() Dim FSO As Object Dim KopiowanyPlik As String
Dim NowyPlik As String
KopiowanyPlik= „C:\Wprawki\PrzykladowaBaza.accdb”
NowyPlik= „C:\NaBlogi\PrzykladowaBaza.accdb” Set FSO=CreateObject(„Scripting.FileSystemObject”)
FSO.Copy KopiowanyPlik, NowyPlik, True
Set FSO=Nothing End Sub