Home > database >  Capture directory value found with wildcard
Capture directory value found with wildcard

Time:10-19

Is there a way of storing the directory found when using a wildcard? For example, if I have code that checks whether a directory exists:

Public Function DirectoryFinder(PartialFolderName As String)
     Dim FilePath As String
     If Dir(CurrentProject.Path & "\DataFolder\" & PartialFolderName & "*", vbDirectory)<>"" Then
          'FilePath = ???
     End If
End Function

Where the current project resides in C:\Folder and the desired full filepath is C:\Folder\DataFolder\PartialFolderName12345.

Is there a way to capture the directory found by the Dir() function within the FilePath variable? If I define FilePath as the following, I don't believe it captures the directory found:

FilePath=CurrentProject.Path & "\DataFolder\" & PartialFolderName & "*"

Rather, it sets FilePath equal to the string "C:\Folder\DataFolder\PartialFolderName*", which doesn't work for what I need.

What I want to be able to capture is the full "C:\Folder\DataFolder\PartialFolderName12345"

CodePudding user response:

Assign the result of the Dir-function directly to the variable and check if it is empty or not:

Dim FilePath As String, BasePath as String
BasePath = CurrentProject.Path & "\DataFolder\"
FilePath = Dir(BasePath & PartialFolderName & "*", vbDirectory)
If FilePath <>"" Then
    ' FilePath now contains the name of the folder that was found.
    ' The full Path would be BasePath & FilePath
    ...
End If

CodePudding user response:

Something like this?

Sub Test()
    Dim MyPath As String
    MyPath = DirectoryFinder("SomeFolder123")
End Sub

Public Function DirectoryFinder(PartialFolderName As String) As String
     Dim FilePath As String
     FilePath = Dir(CurrentProject.Path & "\DataFolder\" & PartialFolderName & "*", vbDirectory)
     If FilePath <> "" Then
          DirectoryFinder = CurrentProject.Path & "\DataFolder\" & FilePath
     End If
End Function
  • Related