|
|
|
Перебор файлов в каталоге
|
|||
|---|---|---|---|
|
#18+
Предлагаю (или прошу) обсудить вопрос перебора всех файлов в каталоге. Для примера принимаю что нужно просмотреть весь каталог с подкаталогами и выбрать имена всех файлов с расширением XLS. Где-то надыбал такой вариант Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Но несколько раз встречал в интернете мнение, что с FileSearch бывают глюки. Так ли это? Потом где то видел такой вариант Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Но тут нужно библиотеку Microsoft Scripting Runtime подключать, хотя вроде ничего в этом страшного и нет Сделал ещё такой вариант Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. Вот хочу чтобы вы прокоментировали эти варианты, высказали своё мнение, может есть какие варианты проще? В последнем варианте может как то по другому можно определить указывает ли ссылка на папку или файл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2007, 18:00 |
|
||
|
Перебор файлов в каталоге
|
|||
|---|---|---|---|
|
#18+
В третьем варианте всё таки приходится проверять ещё и папки с атрибутом архивная (48) Прилагаю файл со всеми моими вариантами, что проще было, и жду отзывов! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2007, 18:12 |
|
||
|
Перебор файлов в каталоге
|
|||
|---|---|---|---|
|
#18+
А вот и файл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2007, 18:12 |
|
||
|
Перебор файлов в каталоге
|
|||
|---|---|---|---|
|
#18+
DeggasadНо несколько раз встречал в интернете мнение, что с FileSearch бывают глюки. Так ли это?Не встречал. Ни сам глюков не встречал и историю про глюки первый раз слышу. Единственное что меня не устраивает в FileSearch - он умеет искать только по стандартным виндовым маскам (* и ?) а мне этого не всегда хватает... DeggasadПотом где то видел такой вариант .... Но тут нужно библиотеку Microsoft Scripting Runtime подключать, хотя вроде ничего в этом страшного и нетЛично я подобный вариант использую чаще всего, еще добавляю regexp фильтрацию имен файлов и жить становится легко и замечательно. DeggasadСделал ещё такой вариант ... В последнем варианте может как то по другому можно определить указывает ли ссылка на папку или файл?Можно и через Dir - самый Бейсиковый вариант. А читать аттрибуты файла это самый правильный способ различить каталог и файл. А вообще, использовать можно любой из трех показаных, какой больше нравится, тот и бери. Это самые простые и широко описаные вариатны для VBA и вообще Бейсикового мира. Есть еще с десяток способов, но они будут слегка посложнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2007, 18:18 |
|
||
|
Перебор файлов в каталоге
|
|||
|---|---|---|---|
|
#18+
Я бы выбрал "ВыбратьКаталогПодкаталогиFSO", да и так делал. Только в качестве параметра при рекурсии передавал бы не (Папка As String), а (Папка As Folder). Тогда можно код записать короче. Можно и выделение имени упростить, там же есть свойство .Name у объекта File. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2007, 18:20 |
|
||
|
Перебор файлов в каталоге
|
|||
|---|---|---|---|
|
#18+
White Owl, я тоже много встречал в интернете плохих отзывов про FileSearch, а как вы думаете, почему Microsoft отключила эту функцию в Office 2007? Я думаю, Mr. KL (MVP Excel) нам больше расскажет про глюки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2007, 18:26 |
|
||
|
Перебор файлов в каталоге
|
|||
|---|---|---|---|
|
#18+
White Owl еще добавляю regexp фильтрацию имен файлов и жить становится легко и замечательно. Что такое regexp фильтрация? Не пояните ли? Может и мне станет легко? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2007, 18:32 |
|
||
|
Перебор файлов в каталоге
|
|||
|---|---|---|---|
|
#18+
vbaproТолько в качестве параметра при рекурсии передавал бы не (Папка As String), а (Папка As Folder). Тогда можно код записать короче. Можно и выделение имени упростить, там же есть свойство .Name у объекта File. Полезное замечание. Вот что получилось! Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Правильно ли я понимаю что мне нужно и в первой процедуре обявить Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2007, 18:49 |
|
||
|
Перебор файлов в каталоге
|
|||
|---|---|---|---|
|
#18+
DeggasadПравильно ли я понимаю что мне нужно и в первой процедуре обявить Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2007, 18:56 |
|
||
|
Перебор файлов в каталоге
|
|||
|---|---|---|---|
|
#18+
Ок спасибо! Вот мне например изначально больше всего нравился вариант с Dir (наверное потому что я им раньше польовался для одной папки), хотя с FileSystemObject Гораздо красивее и понятнее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2007, 19:15 |
|
||
|
Перебор файлов в каталоге
|
|||
|---|---|---|---|
|
#18+
White Owl DeggasadНо несколько раз встречал в интернете мнение, что с FileSearch бывают глюки. Так ли это?Не встречал. Ни сам глюков не встречал и историю про глюки первый раз слышу. Единственное что меня не устраивает в FileSearch - он умеет искать только по стандартным виндовым маскам (* и ?) а мне этого не всегда хватает... http://bbs.vbstreets.ru/viewtopic.php?p=6667141#6667141 KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2007, 19:29 |
|
||
|
Перебор файлов в каталоге
|
|||
|---|---|---|---|
|
#18+
KL (XL) http://bbs.vbstreets.ru/viewtopic.php?p=6667141#6667141 KL [MVP - Microsoft Excel] Привет Этот топик я видел давно Ну а ты что скажашь? Что выбрать? Каккие +/- вариантов. Просто нужно что-то одно выбрать для использования, так сказать пора бы и определиться, а всё никак. Благо это несрочно, вот вот и решил выслушать мнения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2007, 21:57 |
|
||
|
Перебор файлов в каталоге
|
|||
|---|---|---|---|
|
#18+
KL (XL) http://bbs.vbstreets.ru/viewtopic.php?p=6667141#6667141 Ок. Слухи о глюках вижу. Инструкцию как повторить глюк не вижу. Сам на глюки не напарывался. Вывод? :) И вообще, FileSearch в VBA это всего-лишь интерфейс к стандартной виндовой службе поиска файлов. Нажми Win+F и получишь тот же самый функционал только с окошками. DeggasadЧто такое regexp фильтрация? Не пояните ли? Может и мне станет легко? Ну вот например, у тебя в втором и третьем примере есть проверка на xls: Код: plaintext Код: plaintext А с регулярными выражениями это будет например так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2007, 00:37 |
|
||
|
Перебор файлов в каталоге
|
|||
|---|---|---|---|
|
#18+
... подумал и решил дополнить, начиная с этой фразы: White OwlЗдесь маска "\.xl(s|t|a)$" задает что меня не волнует как имя файла начинается, но оно должно кончатся на .xls , .xlt или .xla и ни на что другое. ... Но надо учесть что регулярные выражения при удлинении очень быстро перестают быть читабельными. Найти ошибку в шаблоне в десять-пятнадцать строк можно довольно легко (при соответсвующем опыте конечно), найти ошибку в сорокосимвольном шаблоне практически нереально. Но со всех остальных точек зрения regexp идеальное средство для не точного сравнения строк. Вот представь что у тебя есть кучка xls и кучка запакованых xls которым ты дал имя типа MyBook.xls.zip Запусти: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2007, 01:01 |
|
||
|
Перебор файлов в каталоге
|
|||
|---|---|---|---|
|
#18+
White Owl KL (XL) http://bbs.vbstreets.ru/viewtopic.php?p=6667141#6667141 Ок. Слухи о глюках вижу. Инструкцию как повторить глюк не вижу. Сам на глюки не напарывался. Вывод? :) Да, здесь мне пожалуй трудно привести веские доводы :-( Причина в том, что года 3-4 назад, когда посыпались жалобы на то, что FileSearch возвращает неверные и труднопредсказуемые результаты, Инет кишел примерами воспроизведения глюка. На сайтах Джона Уокенбаха и Чипа Пирсона были целые статьи с примерами и настойчивыми рекомендациями переходить на FSO и Dir. Но в один прекрасный день эти статьи были убраны, видимо авторы сочли, что никто и так не пытается использовать FileSearch, и активные гонения на FileSearch перешли в полный "рэйдио сайленс". :-0 Так что вывод: или веришь мне и еще нескольким Excel MVP на слово ( http://tinyurl.com/2ngsfz ), а также тому, что MS сам заблокировал FileSearch в XL2007, или продолжаешь использовать FileSearch на свой страх и риск ;-) KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2007, 02:23 |
|
||
|
Перебор файлов в каталоге
|
|||
|---|---|---|---|
|
#18+
DeggasadНу а ты что скажашь? Что выбрать? Каккие +/- вариантов. Если надо с субдиректориями, то я предпочитаю FSO, если только первый уровень, то Dir. К приведенным вариантам мне пожалуй добавить нечего :-) KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2007, 02:31 |
|
||
|
Перебор файлов в каталоге
|
|||
|---|---|---|---|
|
#18+
прошу извинить, достаточно сложно воспринять общение профи, но чувствую, моя задача схожа. Надо последовательно обрабатывать файлы в папке, которую указывает пользователь в выскакиваемом диалоговом окне. Чего-то не могу найти, как получить с помощью диалога путь к интересуемой папке. Направьте, плиз. Каким методом или объектом пользоваться? Можно пример? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 11:52 |
|
||
|
Перебор файлов в каталоге
|
|||
|---|---|---|---|
|
#18+
evgenius_bпрошу извинить, достаточно сложно воспринять общение профи, но чувствую, моя задача схожа. Надо последовательно обрабатывать файлы в папке, которую указывает пользователь в выскакиваемом диалоговом окне. Чего-то не могу найти, как получить с помощью диалога путь к интересуемой папке. Направьте, плиз. Каким методом или объектом пользоваться? Можно пример? Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 11:59 |
|
||
|
Перебор файлов в каталоге
|
|||
|---|---|---|---|
|
#18+
Спасибо, но им узнаем полный путь к файлу. Код: plaintext 1. 2. 3. 4. Я представляю один вариант получения пути к папке указанного файла: разбиваем fileToOpen на элементы маской "\" каждый элемент заносим в массив снова создаем строку из элементов массива, только без последнего. Изврат? Или есть пути проще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 12:59 |
|
||
|
Перебор файлов в каталоге
|
|||
|---|---|---|---|
|
#18+
FSO GetFolder поможет пример выше от White Owl ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 13:17 |
|
||
|
Перебор файлов в каталоге
|
|||
|---|---|---|---|
|
#18+
авторИзврат? Или есть пути проще? Код: plaintext I Have Nine Lives You Have One Only THINK! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 13:36 |
|
||
|
Перебор файлов в каталоге
|
|||
|---|---|---|---|
|
#18+
evgenius_b Чего-то не могу найти, как получить с помощью диалога путь к интересуемой папке. Направьте, плиз. Каким методом или объектом пользоваться? Можно пример? Если у Вас Excel2002 и выше, можно так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 14:01 |
|
||
|
Перебор файлов в каталоге
|
|||
|---|---|---|---|
|
#18+
Для Excel 97 и выше Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 14:12 |
|
||
|
Перебор файлов в каталоге
|
|||
|---|---|---|---|
|
#18+
Итог коллективной работы :) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Пасиба. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 14:17 |
|
||
|
Перебор файлов в каталоге
|
|||
|---|---|---|---|
|
#18+
Pavel55White Owl, я тоже много встречал в интернете плохих отзывов про FileSearch, а как вы думаете, почему Microsoft отключила эту функцию в Office 2007? Позвольте поднять старую тему- что, реально FileSearch отключено и в новых программах его лучше не использовать? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2011, 10:41 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=34687203&tid=2176118]: |
0ms |
get settings: |
9ms |
get forum list: |
24ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
185ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
85ms |
get tp. blocked users: |
2ms |
| others: | 240ms |
| total: | 563ms |

| 0 / 0 |
