|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
28.03.2013, 16:23 | #1 |
Форумчанин Подтвердите свой е-майл
Регистрация: 14.11.2007
Сообщений: 163
|
Проверка наличия файла в папке по списку в экселе.
Привет всем!
Вот такая полезная задачка... В папке от 3000 до 15000 файлов pdf. В столбце А список названий файлов от 180 до максимум 500. Нужен макрос, который отметит (в столбце Б отметит рядом) Какой из названий не существует в папке. Все просто, но есть условие: Папки все время разные, поэтому необходимо в начале макроса окошко для выбора папки. П.С. Совсем забыл... если можно на Английском языке т.к. мой эксель не понимает Русский. Друзья! Помогите пожалуйста, очень надо!!!
Jungo must die!!! (C) Bill Gates.
Последний раз редактировалось jungo; 28.03.2013 в 16:49. |
28.03.2013, 17:28 | #2 | ||
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
Код:
в ячейке А1 - путь к проверяемой папке с системным разделителем в конце. если в В видно такое же имя, как в А - значит файл есть, если в В пусто - нет такого файла в указанной папке. Цитата:
Цитата:
все написано на чистом английском (в меру моих познаний). одно не досмотрел - цифры арабские... Ваш ексель арабские понимает? а как к ним относится?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
||
28.03.2013, 18:53 | #3 |
Форумчанин Подтвердите свой е-майл
Регистрация: 14.11.2007
Сообщений: 163
|
IgorGO Большое спасибо!
За чувство юмора тоже! (Я сам родом из Одессы...) Дело в том, что В столбце А не полное название файлов, а название до точки (без .pdf). Я начал решать эту задачку при помощи макроса, который копирует названия всех файлов в папке в столбец В с целью - элементарно сравнить оба столбца, но из за количества файлов в папке макрос бежит 2-4 минуты. Вот начальный мой вариант. Сравнение уже ерунда: Код:
Jungo must die!!! (C) Bill Gates.
|
28.03.2013, 20:17 | #4 |
Старожил
Регистрация: 31.12.2010
Сообщений: 2,133
|
из за количества файлов в папке макрос бежит 2-4 минуты
В смысле - получение списка файлов столько занимает? Тут вряд ли можно сильно ускорить, потому что ~90% времени занимает обращение к файловой системе. Попробуйте в консоли получить список файлов .pdf из папки с подпапками: Код:
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Последний раз редактировалось Казанский; 28.03.2013 в 20:22. |
28.03.2013, 22:43 | #5 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Я думаю тут в теме уже всё есть - берём код выбора папки и код проверки наличия файлов от Игоря.
Расширение добавляем в процессе. Зачем перебирать все 15000, если нужно проверить максимум 500? И кстати думаю что 90% времени занимает не обращение к файлам, а запись этих имён на лист строка за строкой... P.S. Нет, померил - с записью действительно не намного дольше - но файлов правда нашлось всего 400...
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 28.03.2013 в 22:55. |
29.03.2013, 08:19 | #6 |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
а что мешает получить список файлов в консоли:
shell "dir /A:-D /s %Путь1%\*.pdf > %Путь2%\Список1.lst" shell "dir /A:-D %Путь1%\*.pdf > %Путь2%\Список2.lst" потом из двух этих файлов (%Путь2%\Список1.lst и %Путь2%\Список2.lst) сделать справочник, где ключи из списка 1, а значения из списка 2. Дальше только прогнать по справочнику наш текущий список.
Правильно поставленная задача - три четверти решения.
|
29.03.2013, 09:36 | #7 |
Форумчанин
Регистрация: 24.12.2012
Сообщений: 776
|
DiemonStar, текст, получаемый из программы "cmd" (другое название программы "cmd" - "командная строка"), имеет специфическую кодировку символов. Поэтому, например, названия файлов на русском языке будут искажены. Поэтому результат, полученный из программы "cmd", нельзя сразу использовать, а нужно сделать ещё несколько манипуляций, чтобы разобраться с кодировкой.
Последний раз редактировалось Скрипт; 29.03.2013 в 09:41. |
04.04.2013, 13:42 | #8 |
Форумчанин Подтвердите свой е-майл
Регистрация: 14.11.2007
Сообщений: 163
|
Hugo121
А не могли бы вы пожалусйта записать наглядно макрос? Я понимаю о чем вы, но сам к сожелению не в силах это совместить.
Jungo must die!!! (C) Bill Gates.
|
04.04.2013, 13:58 | #9 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Извините, сейчас занят. Может кто другой поможет?
webmoney: E265281470651 Z422237915069 R418926282008
|
04.04.2013, 15:22 | #10 |
Форумчанин Подтвердите свой е-майл
Регистрация: 14.11.2007
Сообщений: 163
|
Я думаю, что самый оптимальный вариант - это искать файлы именно по списку, а не так как в моем варианте - ВСЕ что находится в папке. Может кто сможет подсказать мне именно эту функцию?
Заранее спасибо!
Jungo must die!!! (C) Bill Gates.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проверка наличия файла в папке по имени | strannick | Microsoft Office Excel | 6 | 07.07.2012 18:04 |
Проверка наличия файла | nervniy | Работа с сетью в Delphi | 4 | 28.10.2010 19:47 |
Проверка наличия файла | kain151 | Microsoft Office Word | 3 | 10.03.2010 14:50 |
проверка наличия файла | Juffin | Общие вопросы Delphi | 2 | 18.04.2009 14:17 |
Проверка наличия файла | russian-stalker | Общие вопросы Delphi | 4 | 31.08.2008 19:27 |