Проверка существования пути

Diroled
Дата: 21.09.2005 11:03:47
Private Sub Документы_Click()
Dim Path As Variant
If Len(Dir("Me!Path & Me!Имя_организации", vbDirectory)) = 0 Then
    Path = CVar(Me!Path & Me!Имя_организации)
    Path = CVar("explorer" & " " & Path)
    Shell Path, vbNormalFocus
Else
MsgBox "Папка не существует"
End if

End Sub

Почему, когда когда папка отсутствует выдает ошибку "путь не существует или не является таковым", вместо моего сообщения. Как можно исправить или написать обработчик ошибки в этом случае
Пользователь2
Дата: 21.09.2005 11:11:52
=0 замени на <>0.
Diroled
Дата: 21.09.2005 11:29:59
Пользователь2
=0 замени на <>0.


результат тот же, проверка не работает, может само условие проверки не верно?
АлексейЕ
Дата: 21.09.2005 11:34:02
Из запасов

Вопрос: Определение наличия папки (альтернатива DIR())

Совет:
АлексейЕ
Guest ?dir ("e:\Temp\123", vbDirectory)
Если папка существует вернет 123, если нет, то vbNullString

==================

Serge Gavrilov

?dir ("e:\Temp\123", vbDirectory)

Только надо следить за переменной передаваемой Dir, т.к. если переменная будет "e:\Temp\123\", то Dir вернет имя дочернег каталога

Я использую PathFileExists
Public Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As Long

А отличить файл или каталог позволяет GetAttr(Path)

==================

АлексейЕ

Способ с API хорош, и работает в случае с окончание со "\" и без оного.

"Dir вернет имя дочернег каталога", ну и пусть, как в поговорке,
"хоть горшком обзови, только в печку не ставь."
Нам достаточно что не vbNullString

P.S. К стати, у меня Win. Server 2003 и возвращает, при окончании на "\" просто точку.

==================

Serge Gavrilov

P.S. К стати, у меня Win. Server 2003 и возвращает, при окончании на "\" просто точку.

Да-да, я неправильно написал, конечно не имя дочернего каталога, тем более, что Help
Вызов функции Dir с атрибутом vbDirectory не приводит к последовательному возврату подкаталогов.


И все равно Dir неудобен. Если переменная будет пуста, то
?dir ("", vbDirectory)
тоже вернет точку
А если к дискете обратишься, которой нет, то будет ошибка.

==================

АлексейЕ
Спасибо Сергей,
учту.
АлексейЕ
Дата: 21.09.2005 11:36:50
В строке
If Len(Dir("Me!Path & Me!Имя_организации", vbDirectory)) = 0 Then
уберите кавычки
Пользователь2
Дата: 21.09.2005 11:57:02
    Dim Path As String
    
    If Len(Dir(Me.Path & Me.Имя_организации, vbDirectory)) <> 0 Then
        Path = Me.Path & Me.Имя_организации
        Shell "explorer " & Path, vbNormalFocus
    Else
        MsgBox "Папка не существует"
    End If
Diroled
Дата: 21.09.2005 12:57:15
Пользователь2
    Dim Path As String
    
    If Len(Dir(Me.Path & Me.Имя_организации, vbDirectory)) <> 0 Then
        Path = Me.Path & Me.Имя_организации
        Shell "explorer " & Path, vbNormalFocus
    Else
        MsgBox "Папка не существует"
    End If


Спасибо, это работает и более простой вариант чем мой просто без кавычек
Diroled
Дата: 21.09.2005 12:59:13
АлексейЕ
В строке
If Len(Dir("Me!Path & Me!Имя_организации", vbDirectory)) = 0 Then
уберите кавычки


Спасибо работает, вот только не пойму почему везде пишут в примерах в кавычках, даже в книге, в чем разница?
АлексейЕ
Дата: 21.09.2005 13:13:57
Me!Path Это ссылка на объект.
Если вы возьмете ее в кавычки, то получите простой текст, а не ссылку.
В книге или опечатка, или вы что то не так поняли.