Tipp 1.18 - Existiert Ordner
Wie kann ich prüfen, ob ein Ordner existiert?
Mit dieser Funktion können Sie prüfen, ob ein Ordner existiert. Kopieren Sie einfach nachfolgenden Quellcode in die Zwischenablage und fügen Sie anschließend den Inhalt der Zwischenablage in ein neues Modul ein. Die Aufrufparameter finden Sie im Quellcode beschrieben.
Verwendete Win32-Api-Aufrufe und Typen: FindFirstFile, FindClose - FILETIME, WIN32_FIND_DATA
Beispiel:
Option Explicit Public Const MAXPATH As Long = 260 Public Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type Public Type WIN32_FIND_DATA dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 As Long dwReserved1 As Long cFileName As String * MAXPATH cAlternate As String * 14 End Type Public Declare Function FindFirstFile _ Lib "kernel32" Alias _ "FindFirstFileA" _ (ByVal lpFileName As String, _ lpFindFileData As WIN32_FIND_DATA) _ As Long Public Declare Function FindClose _ Lib "kernel32" _ (ByVal hFindFile As Long) As Long Public Function FolderExists( _ ByVal sFolder As String) _ As Boolean '// ----------------------------------------------------- '// Methode: | Prüft ob Ordner existiert '// ----------------------------------------------------- '// Parameter: | sSource = gültiger Ordnerpfad '// | (auch UNC-Pfad) '// ----------------------------------------------------- '// Rückgabe: | True = Ordner vorhanden; '// | False = Ordner nicht vorhanden '// ----------------------------------------------------- '// Autor: | Stefan Kulpa '// | EDV Innovation & Consulting - Dormagen '// ----------------------------------------------------- Const FILE_ATTRIBUTE_DIRECTORY As Long = &H10 Const INVALID_HANDLE_VALUE As Long = -1 Dim uWFD As WIN32_FIND_DATA Dim lFile As Long '// Zunächst Leerzeichen und ggf. '// endenden Backslash abschneiden sFolder = VBA.Trim$(sFolder) If VBA.Right$(sFolder, 1) = "\" Then sFolder = VBA.Left$(sFolder, VBA.Len(sFolder) - 1) End If lFile = FindFirstFile(sFolder, uWFD) '// Prüfung auf gültigen Datei-Handle '// und auf Verzeichnisattribut FolderExists = (lFile <> INVALID_HANDLE_VALUE) And _ (uWFD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) Call FindClose(lFile) End Function