В качестве альтернативы, я написал функцию, которая принимает полный путь, включая букву диска, если это необходимо в качестве параметра. Затем он проходит путь и перехватывает ошибку VB 76 (путь не найден). Когда обработчик ошибок перехватывает ошибку 76, он создает папку, которая вызвала ошибку, и возобновляет обход пути.
Public Function Check_Path(rsPath As String) As Boolean
Dim dPath As String
Dim i As Integer
Dim sProductName As String
On Error GoTo Check_Path_Error
If Left$(UCase$(rsPath), 2) Left$(UCase$(CurDir), 2) Then
ChDrive Left$(rsPath, 2)
End If
i = 3
Do While InStr(i + 1, rsPath, "\") > 0
dPath = Left$(rsPath, InStr(i + 1, rsPath, "\") - 1)
i = InStr(i + 1, rsPath, "\")
ChDir dPath
Loop
dPath = rsPath
ChDir dPath
Check_Path = True
Exit Function
Check_Path_Error:
If Err.Number = 76 Then 'path not found'
MkDir dPath 'create the folder'
Resume
Else
sProductName = IIf(Len(App.ProductName) = 0, App.EXEName, App.ProductName)
MsgBox "There was an unexpected error while verifying/creating directories." _
& vbCrLf & vbCrLf & "Error: " & CStr(Err.Number) & ", " & Err.Description & ".", _
vbOKOnly + vbCritical, sProductName & " - Error Creating File"
Check_Path = False
End If
End Function