'Глюк в ExistDir
'Автор: Игорь Мальцев
'При разработке приложений в VB или VBA часто возникает потребность в
'функциях ExistFile и ExistDir, проверяющих существование файла или папки. В
'литературе встречаются такие примеры:
Public Function ExistFile(ByVal strFileName As String) As Boolean
ExistFile = False
On Error GoTo f1
ExistFile = (Dir(strFileName) <> "")
f1:
On Error GoTo 0
End Function
Public Function ExistDir(ByVal dirName As String) As Boolean
ExistDir = False
On Error GoTo f1
If Len(dirName) < 2 Then GoTo f1
If Right(dirName, 1) = "\" Then dirName = Left(dirName, Len(dirName) - 1)
ExistDir = (Dir(dirName, vbDirectory) <> "")
f1:
On Error GoTo 0
End Function
'Однако, при попытке применить функцию ExistDir к сетевым путям, обнаруживается, что она работает неверно,
'возвращая, например, False для существующей папки \\MAIN\POST$.
'Небольшая модификация этой фунции позволяет использовать ее как для
'обычных, так и сетевых путей:
Public Function ExistDir(ByVal dirName As String) As Boolean
ExistDir = False
On Error GoTo f1
If Len(dirName) < 2 Then GoTo f1
If Right(dirName, 1) = "\" Then dirName = Left(dirName, Len(dirName) - 1)
If Left(dirName, 2) = "\\" Then
ExistDir = (Dir(dirName + "\", vbDirectory) <> "")
Else
ExistDir = (Dir(dirName, vbDirectory) <> "")
End If
f1:
On Error GoTo 0
End Function