2010-11-23 1 views
1

Мне нужно проверить, существует ли файл в каталоге. Два параметра, о которых я думал, используют регулярное выражение (vbscript.regexp), чтобы определить, присутствует ли файл. Другой вариант заключается в использовании FileSystemObjectFileExists.Было бы лучше использовать регулярное выражение или простые FileExists для поиска файлов?

Недостатки использования регулярного выражения подразумевают, что мне нужно будет пропустить каждый файл в каталоге и протестировать регулярное выражение для каждого имени файла. Во-вторых, подход с регулярным выражением может быть сложнее поддерживать (регулярное выражение) в будущем. Тем не менее, мне нужно проверить два регулярных выражения, так как может быть другая версия того же файла. Для одного из файлов есть часть описания имени файла, которая часто изменяется (нормально, это ложь - она ​​изменяется в каком-то случайном цикле), поэтому использование регулярного выражения поможет в согласовании файлов независимо от этой части = более надежный код ,

Используя FileExists, я могу проверить оба файла одновременно и в зависимости от логического значения, возвращаемого для каждой проверки, обработка может продолжаться. Связанный с этим недостаток для использования FileExists заключается в том, что сопоставление подстановочных знаков не поддерживается, поэтому при рассмотрении имени файла с описанием это всегда необходимо обновить, чтобы отразить новое описание = больше головных болей в обслуживании. Тем не менее, это проще понять и легче изменить.

Формат имен файлов:

Data_Sheet_<yyyymmdd>_D.xlsx // the normal file 
Data_Sheet_<yyyymmdd>_D_<some description>.xlsx // the alternate file 

<yyyymmdd> часть файла будет определяться текущей папке файл находится в

Вопрос:. Было бы лучше использовать регулярное выражение или простой FileExists для поиска файлов?

Я буду использовать любой из указанных методов в макросе Excel vba.

+1

Можете привести несколько примеров? – smirkingman 2010-11-23 09:08:49

+0

@smirkingman - какие примеры? имена файлов? регулярное выражение? использование FileExists? – Ahmad 2010-11-23 09:11:07

ответ

2

Вы просмотрели Dir()? Вы можете передать его подстановочным символам. Как my*file.pd? Возможно, это может быть способ пойти на компромисс. Конечно, вы не получите полную силу регулярного выражения, но можете ограничить свои файлы, а затем проверить, что существует.

Лично я хотел бы использовать FileExists(), а не перебирать каталоги и тестировать каждый файл. Если каталог стал огромным, а ваш цикл мог занять все время. Хотя, если вы используете Dir(), вы можете ограничить количество файлов, которые вам нужны для перебора. Плюс FileExists() ровно одна линия/оператор и чище ... хотя тогда вы должны убедиться, что время выполнения сценариев включена в проект

http://techonthenet.com/excel/formulas/dir.php http://www.blueclaw-db.com/listbox-directory.htm http://www.hobbub.com/vba-vb-vsto/iterating-over-a-directory-with-a-dir-loop-loop-through-directory-vb/

второй и третьей ссылки имеют лучшие примеры итерации над каталогом.

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