Доброго вечера, Планетяне! Пробовал разобраться с данной проблемой сам, но вероятность ошибки слишком дорога для повседневного использования. Итак снова ТЗ.
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 р.
Сроки не горят, но в разумных пределах))) пишите (в тему, в личку или могу предоставить другие контакты, при необходимости) свои предложения, вопросы и замечания. Если какие-то моменты ведут к сильному удорожанию, то тоже всё можно обсудить и (при рациональной необходимости) изменить или сократить ТЗ.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Ivan.kh, доброго утра! Сроки не горят, обсуждаемо, как и бюджет. Пишите в личку предложения. Обратите внимание, что добавился 5ый пункт о выводе финишного сообщения. OFF: не понимаю, как заказчик может знать цену такой работы)))
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Jack Famous написал: OFF: не понимаю, как заказчик может знать цену такой работы)))
Чаще всего есть сумма на которую человек рассчитывает. Исходя из этого и сроков, исполнитель уже делает вывод стоит ли ему за это браться (чтоб не тратить ни свое ни ТС время).
На работу не претендую, учитывая как закончилась Ваша тема в разделе этом разделе.
Ivan.kh написал: Чаще всего есть сумма на которую человек рассчитывает
так же можно сказать, что есть сумма, за которую человек будет браться за эту работу (для каждого индивидуальна). Но, так как в правилах это рекомендуется озвучить именно заказчику, то до 3 000 (добавил в шапку).
Цитата
Ivan.kh написал: На работу не претендую, учитывая как закончилась Ваша тема в разделе этом разделе.
если только из-за этого, то должен сказать, что с AndreTM мы тогда просто друг-друга не поняли, а Игорь Гончаренко (готов был выполнить тогда) в данный момент занят и не может в ближайшее время приступить (я ему в первую очередь написал).
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄