2015-03-27 2 views
1

У меня есть код, который должен искать имя файла в папке на сервере, и если этот файл существует, пользователю предлагается либо перезаписать файл, либо нет. Однако код всегда запрашивает пользователя независимо от существующего файла или нет.Поиск имени файла с использованием переменной в Excel VBA

Я нашел несколько примеров этого сайта, однако они используют статические имена файлов. Я пытаюсь изменить его, чтобы соответствовать моим потребностям, но никуда не денусь.

Код для поиска, если файл существует, так

'checks if file you're saving already exists 
    If FileThere("\\showdog\service\Service_job_PO\" & UserInput) = True Then 
     'do stuff here 

функция для этого кода заключается в следующем:

Function FileThere(filename As String) As Boolean 
If FileThere = (Dir("\\showdog\service\Service_job_PO\" & UserInput) <> "") Then 
FileThere = True 
Else 
FileThere = False 
End If  
End Function 
+0

что вы используете в качестве пользователя? – user1274820

+0

UserInput - это то, что пользователь сохраняет файл как. Предполагается, что он проверяет, существует ли в этом каталоге имя, которое пользователь объявляет. – Rick

+0

Да, я знаю, но с использованием подстановочных знаков или форматирования, которые могут явно вызвать проблемы. Что вы пробовали, что не работали правильно? – user1274820

ответ

2

Я считаю, что это должно быть ниже. Вы хотите проверить, существует ли каталог, связанный с переданным параметром filename.

Function FileThere(filename As String) As Boolean 
If Dir(filename) <> "" Then 
FileThere = True 
Else 
FileThere = False 
End If  
End Function 

Edit:

Я предполагаю, что вы подаете полный путь к файлу в этой строке, в этом случае вы ссылаться на путь к файлу, который передается в функцию FileThere.

If FileThere("\\showdog\service\Service_job_PO\" & UserInput) = True Then 
+0

Но как я могу попасть в каталог, в котором находится этот файл? Без включения пути к файлу это не победит цель? Или я думаю об этом? – Rick

+0

См. Мое редактирование. – Kyle

0

Вы можете сократить это все вплоть до одного теста, а не удвоения с ОДС:

If Len(Dir("\\showdog\service\Service_job_PO\" & UserInput)) > 0 Then 

В соответствии с другими комментариями выше вашего исходного кода использует UserInput дважды

Смежные вопросы