Страницы: 1
RSS
Копирование/Перемещение/Удаление файлов по спискам в Excel
 
Доброго вечера, Планетяне!
Пробовал разобраться с данной проблемой сам, но вероятность ошибки слишком дорога для повседневного использования. Итак снова ТЗ.

6 очень похожих друг на друга макросов в отдельном виде (примерные имена переменных в скобках):
1. Удалить файлы по списку (FolderOut, ListOld)
2. Вырезать файлы по списку (FolderOut, FolderIn, ListOld)
3. Копировать файлы по списку (FolderOut, FolderIn, ListOld)
4. Переименовать файлы в папке по спискам (FolderOut, ListOld, ListNew)
5. Вырезать и Переименовать файлы по спискам (FolderOut, FolderIn, ListOld, ListNew)
6. Копировать и Переименовать файлы по спискам (FolderOut, FolderIn, ListOld, ListNew)

Дано:
1. Папка-источник (FolderOut). В ней содержатся файлы с разным расширением и (иногда) с одинаковым названием.
Запрос выбора папки через диалоговое окно как, например тут. Проверка папки на НЕпустоту (должна содержать хотя бы 1 файл)
2. Папка назначения (FolderIn). Сюда будут копироваться/вырезаться файлы.
Запрос выбора папки через диалоговое окно. Проверка папки на пустоту (должна быть пустая)
3. Список (списки) файлов в Excel для поиска и/или соответствия "ListOld" и "ListNew". Списки представлены в виде имён файлов в ячейках (все без расширений). Списки могут быть расположены на разных листах, но всегда в одной книге (в примере я разместил все списки на одном листе, рядом и в виде умной таблицы, но так бывает не всегда).
Вывод одного (для удаления/копирования/перемещения) или двух (для всех операций, связанных с переименованием) InputBox'ов для выделения диапазона(-ов) пользователем.

Проверки и нюансы:
1. Сравниваем "ListOld" и "ListNew" (если "ListNew" участвует, разумеется)
Они должны содержать одинаковое количество элементов ("ListOld.Count"="ListNew.Count")
КАЖДЫЙ НЕ должен содержать пустых ячеек.
КАЖДЫЙ НЕ должен содержать дубликатов (при этом элементы "ListOld" могут присутствовать в "ListNew" и наоборот)
2. "ListOld" и "ListNew" необходимо проверить на наличие запрещённых символов. При наличии таковых, вывести ошибку.
3. При поиске в "ListOld" и сопоставлении с "ListNew" имена файлов берутся в отображаемом виде — что-то вроде VisualVal, однако, например, "000" она видит как "0" — а это тут важно.
4. Все операции с файлами выполняются без учёта расширения. Точки могут присутствовать в имени файла (в примере это 3 имени с датами), поэтому я не знаю, как идентифицировать расширение файла.
5. Резервное копирование выполнять не нужно. Достаточно предупреждающего сообщения для всех операций (действительно ли вы хотите вырезать/копировать и т.д.).
6. По окончании работы макроса, вывод сообщения типа «Вырезано (или скопировано/удалено/вырезано и переименовано) "X" из "N" файлов», где N - ListOld.Count (количество имён файлов в списке для поиска).
При наличии "ListNew", ListOld.Count должно быть равно ListOld.Count (проверка в п.1).
При "X"<>"N", вывод в Msg первых 10 из ненайденных элементов (вывести в переменную типа NotFound, чтобы я мог потом менять в макросе)

Бюджет до 3 000 р.

Сроки не горят, но в разумных пределах))) пишите (в тему, в личку или могу предоставить другие контакты, при необходимости) свои предложения, вопросы и замечания.
Если какие-то моменты ведут к сильному удорожанию, то тоже всё можно обсудить и (при рациональной необходимости) изменить или сократить ТЗ.


Файлы для примера
Изменено: Jack Famous - 15.09.2017 14:52:51
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Какие сроки и бюджет?
 
Ivan.kh, доброго утра! Сроки не горят, обсуждаемо, как и бюджет. Пишите в личку предложения.
Обратите внимание, что добавился 5ый пункт о выводе финишного сообщения.
OFF: не понимаю, как заказчик может знать цену такой работы)))
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
OFF: не понимаю, как заказчик может знать цену такой работы)))
Чаще всего есть сумма на которую человек рассчитывает.
Исходя из этого и сроков, исполнитель уже делает вывод стоит ли ему за это браться (чтоб не тратить ни свое ни ТС время).

На работу не претендую, учитывая как закончилась Ваша тема в разделе этом разделе.
 
Цитата
Ivan.kh написал:
Чаще всего есть сумма на которую человек рассчитывает
так же можно сказать, что есть сумма, за которую человек будет браться за эту работу (для каждого индивидуальна). Но, так как в правилах это рекомендуется озвучить именно заказчику, то до 3 000 (добавил в шапку).
Цитата
Ivan.kh написал:
На работу не претендую, учитывая как закончилась Ваша тема в разделе этом разделе.
если только из-за этого, то должен сказать, что с AndreTM мы тогда просто друг-друга не поняли, а Игорь Гончаренко (готов был выполнить тогда) в данный момент занят и не может в ближайшее время приступить (я ему в первую очередь написал).
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
уточняем детали задачи
сдано на тестирование
готово!
Изменено: Ігор Гончаренко - 25.09.2017 16:06:26
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Исполнено в лучшем виде!  :idea:
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх