VBA Tipp: DirExists

Aus DBWiki
Wechseln zu: Navigation, Suche

Aufgabenstellung

Es soll festgestellt werden, ob ein Verzeichnis (Ordner) existiert.

Lösung 1

Public Function OrdnerExistiert(ByVal Ordnerpfad As Variant) As Boolean
 
   ' Quelle: http://www.dbwiki.net/
 
   On Error Resume Next
   OrdnerExistiert = (GetAttr(Ordnerpfad) And vbDirectory) = vbDirectory
 
End Function

Lösung 2

Public Function OrdnerExistiert(ByVal Ordnerpfad As Variant) As Boolean
 
   ' Quelle: http://www.dbwiki.net/
 
   On Error Resume Next
   OrdnerExistiert = CreateObject("Scripting.FileSystemObject") _
         .FolderExists(Ordnerpfad)
 
End Function

Aufruf für Lösung 1 und 2

   Dim strPfad As String
   strPfad = "D:\Mein Pfad"
 
   If OrdnerExistiert(strPfad) Then
      MsgBox "Der Ordner existiert."
   Else
      MsgBox "Der Ordner existiert nicht."
   End If

Lösung 3

Kopiere folgenden Code in ein allgemeines VBA-Modul.

#If VBA7 Then
Private Declare PtrSafe Function GetFileAttributesW Lib "kernel32" ( _
   ByVal lpFileName As LongPtr) As Long
#Else
Private Declare Function GetFileAttributesW Lib "kernel32" ( _
   ByVal lpFileName As Long) As Long
#End If
 
Public Function DirectoryExists(Path As String) As Boolean
 
   ' Quelle: http://www.dbwiki.net/
 
   Dim dwAttrib As Long
 
   Const INVALID_FILE_ATTRIBUTES  As Long = &HFFFFFFFF
   Const FILE_ATTRIBUTE_DIRECTORY As Long = &H10
 
   dwAttrib = GetFileAttributesW(StrPtr(Path))
 
   DirectoryExists = (dwAttrib <> INVALID_FILE_ATTRIBUTES) And _
                     (dwAttrib And FILE_ATTRIBUTE_DIRECTORY)
 
End Function


Weblinks