Проверить существование папки по неполному названию

Damasevich
Дата: 25.01.2016 13:48:14
Добрый день!

Есть база данных клиентов юр.лиц. На форме в числе прочего есть поля "ИНН" и "Название". Имеется кнопка "Папка" которая открывает папку в експлорере с документами по этому клиенту. При нажатии на эту кнопку проверяется наличие на диске Z папки с названием равным ИНН - если такой папки еще нет, то она создается - и открывает эту папку.
Вот код он прекрасно работает:
Private Sub cmdFolder_Click()

Dim INN As String
Dim fso As New FileSystemObject

INN = Me.Controls("ИНН").Value
If fso.FolderExists("Z:\" & INN") Then
        Shell "explorer Z:\" & INN, vbNormalFocus
    Else
        fso.CreateFolder ("Z:\" & INN)
        Shell "explorer Z:\" & INN, vbNormalFocus
End If

End Sub


Но при таком решении сложно искать папки вручную (не через аксесс)
Задача - чтобы папки назывались ИНН + пробел + Название ( а лучше наоборот (Название + пробел + ИНН)
Создать такую папку проблемы нет:
fso.CreateFolder ("Z:\Imhotep\" & INN & " " & FirmaS)

Вот только удалить запрещенные символы надо (кавычки и слэши) - вот вопрос
А главное, как проверить существование такой папки и открыть ее при условии что название в базе (поле на форме) может корректироваться и вообще не будет соответствовать назвнию папки (из-за удаленных в названии папки кавычек например)

Грубо говоря: Как Like запихнуть в Shell и в FolderExists

Заранее спасибо!
MrShin
Дата: 25.01.2016 13:53:15
Функция Dir поддерживает маски поиска
Damasevich
Дата: 27.01.2016 12:56:23
MrShin, Спасибо! То что надо!

Вот как я сделал если кому нужно:
Private Sub cmdFolder_Click()

Dim INN As String, Firma As String, F As String
Dim fso As New FileSystemObject

INN = Me.Controls("ИНН").Value
Firma = Me.Controls("Название").Value
Firma = Replace_symbols(Firma)
F = Dir("Z:\" & "*" & INN, vbDirectory)

If F = "" Then
    fso.CreateFolder ("Z:\" & Firma & " " & INN)
    F = Dir("Z:\" & "*" & INN, vbDirectory)
    Shell "explorer Z:\" & F, vbNormalFocus
    Else
    Shell "explorer Z:\" & F, vbNormalFocus
End If

End Sub


А вот используемая выше функция для удаления из имени запрещенных символов (нашел где-то в интернете):
Function Replace_symbols(ByVal txt As String) As String
    Dim St$, i%
    St$ = "~!@/\#$%^&*=|`"""
    For i% = 1 To Len(St$)
        txt = Replace(txt, Mid(St$, i, 1), "")
    Next
    Replace_symbols = txt
End Function