Jak sprawdzić, czy plik lub folder istnieje?

przez | 2024-05-08

Czasami chcemy sprawdzić, czy plik istnieje. Może to być przydatne gdy chcemy dany plik skopiować, skasować albo dodać jako załącznik do maila. Próba odwołania się do nieistniejącego pliku może wygenerować błąd. Dlatego warto jest przed dokonaniem próby wykonania jakiejś operacji na pliku sprawdzić, czy on istnieje.

Można skorzystać z sztuczki z funkcją Dir, ale ona sobie nie zawsze zwraca poprawny wynik w przypadku plików lub folderów na dysku sieciowym. Dlatego osobiście preferuję skorzystać z obiektu FileSystemObject. Aby móc z niego skorzystać należy do projektu dołączyć bibliotekę Microsoft Scripting Runtime do projektu VBA. W tym celu w edytorze VBA należy z menu Tools wybrać polecenie References.

Pojawi się okno dialogowe References – VBAProject. Należy odszukać bibliotekę Microsoft Scripting Runtime i ją „zaptaszkować” a następnie kliknąć w przycisk OK.

Następnie w edytorze VBA wklej taki oto kod:

Function isFileExists(File As String) As Boolean
    Dim fso As FileSystemObject
    Set fso = New FileSystemObject
    
    isFileExists = fso.FileExists(File)
    Set fso = Nothing
End Function

Function isFolderExists(Folder As String) As Boolean
    Dim fso As FileSystemObject
    Set fso = New FileSystemObject
    
    isFolderExists = fso.FolderExists(Folder)
    Set fso = Nothing
End Function


Sub Testy()
    Debug.Print "Plik na dysku: ", isFileExists("c:\temp\plik.txt")
    Debug.Print "Plik na dysku sieciowym: ", isFileExists("\\janek\temp\plik.xlsx")
    
    Debug.Print "Folder na dysku: ", isFolderExists("c:\windows")
    Debug.Print "Folder na dysku sieciowym: ", isFolderExists("\\janek\temp\raporty")
End Sub

Zdefiniowałem tutaj dwie bliźniacze funkcje o nazwach isFileExists oraz isFolderExists, które zwracają wartość True gdy plik (lub folder) istnieje lub False, gdy plik (lub folder) nie istnieje. Procedura o nazwie Testy służy do przetestowania tych dwóch nowych funkcji (podmień nazwy plików/folderów na takie jakie u Ciebie na komputerze istnieją a następnie sprawdź czy zostanie zwrócona wartość True. Następnie zrób jakąś literówkę w nazwie pliku, aby sprawdzić czy zostanie zwrócona wartość False).

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.