2017-01-03 1 views
1

Ich bin ein kleines Programm mit Access 2010 erstellen und verwende die unten, um nach einem Ordner zu suchen und wenn es nicht existiert, dann erstellen Sie es, was funktioniert:Access VBA Lookup-Ordner und erstellen, wenn nicht vorhanden ist DLOOKUP

'need code to create folder 
    If Dir("C:\Michael\Test", vbDirectory) = "" Then 
     MkDir ("C:\Michael\Test") 
    Else 
     'do nothing for directory already exists 
    End If 

Allerdings muss ich dies ändern. Der Pfad kann sich ändern, je nachdem, was der Benutzer ausgewählt hat. Im Moment wird der Pfad aufgebaut und in einer Tabelle ("tmpDestFolders") im Feld ("FlatFile") gespeichert.

In der Tat muss ich nachschlagen, was auch immer dieser Wert ist, aber das unten funktioniert nicht - wie kann ich es ändern, so wird es überprüfen, was auch immer der Feldwert ist? Ich halte nur Fehler 76 ungültige Pfad empfangen:

'need code to create folder 
    If Dir(DLookup("FlatFile", "tmpDestFolders"), vbDirectory) = "" Then 
     MkDir (DLookup("FlatFile", "tmpDestFolders")) 
    Else 
     'do nothing for directory already exists 
    End If 
+0

Wenn "FlatFile" einen ungültigen Pfad enthält, erhalten Sie diesen Fehler. Also, was schaust du? – Gustav

+0

"FlatFile" enthält den gesamten Pfad z.B. c: \ test \ stuff \ sachen – Michael

+0

Und was passiert, wenn Sie den Pfad in Ihrem ursprünglichen Code mit diesem Pfad ersetzen? – Gustav

Antwort

0

einen API-Aufruf verwenden:

Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal lpPath As String) As Long 

und dann einfach:

MakeSureDirectoryPathExists DLookup("FlatFile", "tmpDestFolders") 
+0

woohoo, danke, es funktioniert. – Michael

1

@ Gustavs Beispiel ist groß, wie es ein Motto ist . Meine Funktion enthält zwar mehr Codezeilen, fügt jedoch eine Flagoption hinzu, die das Verzeichnis für Sie erstellt, wenn Sie dies auf true festlegen. Es ist ein netter zu der Bibliothek hinzuzufügen. Es basiert aus dem Access-Master (Allen Brown) Funktion Folder Exists

Function FolderExistsCreate(DirectoryPath As String, CreateIfNot As Boolean) As Boolean 
    Dim Exists As Boolean 
    On Error GoTo DoesNotExist 
    Exists = ((GetAttr(DirectoryPath) And vbDirectory) = vbDirectory) 

    If Exists Then 
     FolderExistsCreate = True 
    Else 
     ' Doesn't Exist Determine If user Wants to create 
     If CreateIfNot Then 
      MkDir DirectoryPath 
      FolderExistsCreate = True 
     Else 
      FolderExistsCreate = False 
     End If 
    End If 
    Exit Function 
DoesNotExist: 
    FolderExistsCreate = False 
End Function 

Hinweise: Dies kann leicht zum Beispiel genannt werden, wenn Sie nur ein Verzeichnis erstellt werden sollen, wenn es nicht vorhanden ist, wie:

Call FolderExistsCreate(strPath, True) 

Oder wenn Sie, wenn ein Ordner testen möchten, existiert dann erstellen, wenn nicht mag:

' Check for User Specified 'Local' Dir Inbound Dir 
If FolderExistsCreate(strPath, True) Then 
    ValidateInboundLocal = True 
Else 
    ValidateInboundLocal = False 
End If 

Oder wenn Sie nur wollen, f überprüfen oder ein Verzeichnis ohne es zu erstellen wie:

' Check for User Specified 'Local' Dir Inbound Dir 
If FolderExistsCreate(strPath, False) Then 
    ValidateInboundLocal = True 
Else 
    ValidateInboundLocal = False 
End If 
Verwandte Themen