VBA FileSystemObject (FSO)

Excel VBA FileSystemObject (FSO)

VBA FileSystemObject (FSO) działa podobnie do FileDialog, używanego do uzyskiwania dostępu do innych plików komputera, na którym pracujemy. Możemy również edytować te pliki, czyli czytać lub zapisywać plik. Korzystając z FSO, możemy uzyskać dostęp do plików, pracować z nimi, modyfikować pliki i foldery. FSO jest ważnym narzędziem API, do którego możemy uzyskać dostęp za pomocą VBA. W ramach projektu VBA może być konieczne uzyskanie dostępu do kilku folderów i plików na naszym komputerze, aby wykonać zadanie.

Możemy wykonać wiele zadań, używając FSO, takich jak „sprawdzenie, czy folder jest dostępny, czy nie”, utworzenie nowego folderu lub plików, zmiana nazwy istniejącego folderu lub plików, pobranie listy wszystkich plików w folderze, a także nazw podfolderów, oraz wreszcie możemy kopiować pliki z jednej lokalizacji do drugiej.

Nawet jeśli są dostępne inne funkcje do pracy z folderami i plikami, FSO jest najłatwiejszą metodą pracy z folderami i plikami, utrzymując kod VBA schludny i prosty.

Możemy uzyskać dostęp do 4 typów obiektów za pomocą FileSystemObject. Poniżej znajdują się te.

  1. Dysk: Za pomocą tego obiektu możemy sprawdzić, czy wspomniany dysk istnieje, czy nie, możemy uzyskać nazwę ścieżki, typ dysku i rozmiar dysku.
  2. Folder: ten obiekt pozwala nam sprawdzić, czy dany folder istnieje, czy nie. Za pomocą tego obiektu możemy tworzyć, usuwać, modyfikować, kopiować foldery.
  3. Plik: ten obiekt pozwala nam sprawdzić, czy dany plik istnieje, czy nie. Możemy tworzyć, usuwać, modyfikować, kopiować pliki za pomocą tego obiektu vba.
  4. Strumień tekstu: ten obiekt pozwala nam tworzyć lub czytać pliki tekstowe.

Wszystkie powyższe metody mają swoją własną metodę pracy. W oparciu o nasze wymagania możemy wybrać metodę każdego obiektu.

Jak włączyć FileSystemObject?

Nie jest łatwo dostępny w VBA. Ponieważ dostęp do plików i folderów jest zewnętrznym zadaniem programu Excel, musimy włączyć FileSystemObject. Aby włączyć, wykonaj poniższe czynności.

Krok 1: Przejdź do Narzędzia> Referencje.

Krok # 2 - Wybierz opcję „Microsoft Scripting Runtime”

Przewiń w dół i wybierz opcję „Microsoft Scripting Runtime”. Po wybraniu opcji kliknij OK.

Teraz możemy uzyskać dostęp do FileSystemObject (FSO) w vba.

Utwórz wystąpienie FileSystemObject

Po włączeniu opcji „Microsoft Scripting Runtime” z biblioteki Objects, musimy utworzyć instancję File System Object (FSO) poprzez kodowanie.

Aby utworzyć instancję, najpierw zadeklaruj zmienną jako FileSystemObject.

Jak widać, FileSystemObject pojawia się na liście IntelliSense w języku VBA. Nie byłoby to dostępne przed włączeniem „Microsoft Scripting Runtime”.

Ponieważ FSO jest obiektem, musimy go ustawić, aby utworzyć nową instancję.

Teraz mamy dostęp do wszystkich opcji FSO (FileSystemObject).

Przykłady użycia VBA FileSystemObject

Możesz pobrać ten szablon VBA FileSystemObject Excel tutaj - szablon VBA FileSystemObject Excel

Przykład nr 1 - Znajdź całkowitą przestrzeń na dysku

Poniższy kod poda całkowitą przestrzeń na dysku.

Kod:

 Sub FSO_Example1 () Dim MyFirstFSO As FileSystemObject Set MyFirstFSO = New FileSystemObject Dim DriveName As Drive Dim DriveSpace As Double Set DriveName = MyFirstFSO.GetDrive ("C:") 'Utwórz nowy obiekt napędu DriveSpace = DriveName.FreeSpace' To dostanie wolne miejsce dysku "C" DriveSpace = DriveSpace / 1073741824 'Spowoduje to konwersję wolnego miejsca na GB DriveSpace = Round (DriveSpace, 2)' Zaokrąglij całkowitą przestrzeń MsgBox "Drive" & DriveName & "has" & DriveSpace & "GB" End Pod 

Podział Kodeksu.

Najpierw stworzyliśmy instancję FSO.

 Dim MyFirstFSO As FileSystemObject Ustaw MyFirstFSO = New FileSystemObject

Następnie zadeklarowaliśmy dwie zmienne.

 Dim DriveName As Drive Dim DriveSpace As Double 

Ponieważ DriveName jest zmienną Object, musimy ustawić ją na FSO, jedną z metod FSO. Ponieważ potrzebujemy charakterystyki dysku, skorzystaliśmy z opcji Get Drive i wymieniliśmy nazwę dysku

 Ustaw DriveName = MyFirstFSO.GetDrive („C:”)

Teraz dla innej zmiennej DriveSpace przypiszemy metodę wolnego miejsca na dysku, do którego uzyskujemy dostęp.

DriveSpace = DriveName.FreeSpace

W tej chwili powyższe równanie może nam zwolnić miejsce na dysku „C”. Aby wyświetlić wynik w GB, podzieliliśmy wolne miejsce przez 1073741824

DriveSpace = DriveSpace / 1073741824

Następnie zaokrąglimy liczbę.

DriveSpace = Round (DriveSpace, 2)

Na koniec pokaż wynik w oknie wiadomości.

MsgBox „Drive” & DriveName & „ma„ & DriveSpace ”i„ GB ”

Gdy uruchamiamy kod ręcznie lub klawiszem skrótu F5, to w oknie komunikatu otrzymamy wolne miejsce na dysku „C”.

Tak więc w moim komputerze Dysk C ma 216,19 GB wolnej pamięci.

Przykład 2 - Sprawdź, czy folder istnieje, czy nie

Aby sprawdzić, czy dany folder istnieje, czy nie, użyj poniższego kodu.

Jeśli wspomniany folder jest dostępny, wyświetli się okno komunikatu „Wspomniany folder jest dostępny” , jeśli nie, zostanie wyświetlone okno komunikatu VBA z informacją „Wspomniany folder jest niedostępny”.

Kod:

 Sub FSO_Example2 () Dim MyFirstFSO As FileSystemObject Ustaw MyFirstFSO = New FileSystemObject If MyFirstFSO.FolderExists ("D: \ Excel Files \ VBA \ VBA Files") Następnie MsgBox "Wspomniany folder jest dostępny" Inaczej MsgBox "Nie jest wymieniony End If End Sub 

Uruchom ten kod za pomocą klawisza skrótu F5 programu Excel lub ręcznie, a następnie zobacz wynik.

Przykład # 3 - Sprawdź, czy plik istnieje, czy nie

Poniższy kod sprawdzi, czy wspomniany plik jest dostępny, czy nie.

Kod:

 Sub FSO_Example3 () Dim MyFirstFSO As FileSystemObject Ustaw MyFirstFSO = New FileSystemObject If MyFirstFSO.FileExists ("D: \ Excel Files \ VBA \ VBA Files \ Testing File.xlsm") Następnie MsgBox "Wspomniany plik jest dostępny" Inaczej MsgBox Plik jest niedostępny ”End If End Sub 

Run this code manually or using the F5 key, then see the result.