Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Microsoft Office и VBA > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 05.07.2017, 16:38   #1
George87
 
Регистрация: 05.07.2017
Сообщений: 4
Репутация: 10
Лампочка Создать иерархический список всех каталогов и файлов, как в проводнике Windows

Здравствуйте!
Работаю в маленькой некоммерческой организации, помогающей больным детям.
У нас всего 1 настольный ПК и интернет через USB-модем.
Ясно, что серверное/облачное резервное копирование – не наш вариант. Поэтому делаю копии за день на флэшки, а за месяц – на DVD (как раз умещаются документы и фото-отчёты).
Понятно, что нужен список файлов, хранящихся на резервных DVD.
На форумах нашёл множество соответствующих алгоритмов и несколько готовых вариантов. На их основе зимой (пока мало работы с детьми) написал свою программу.
Макрос для создания древовидного списка с выбором папок и файлов см. на диске Yandex:
http://yadi.sk/d/M6-sV68v3K7ie3
(файл с макросом – около 3 Мб – больше разрешённого для загрузки на форум, даже если максимально сжать архиватором)

Установка и запуск макроса
1. Установка: скопировать в любой каталог 3 файла:
Создать список.xls
ExtList.txt – список масок расширений файлов
PatternList.txt – список образцов выбора файлов
2. Запуск:
щёлкнуть правой кнопки мыши на ячейке листа, с которой создавать список, и выбрать в открывшемся меню ``Создать список каталогов/файлов``
или в редакторе Visual Basic: CreateLst -> Modules -> CreateList -> CreateListStart

Макрос использует следующие библиотеки:
Для работы с реестром:
%systemroot%\system32\advapi32.dll
Для работы с файловой системой (Scripting.FileSystemObject):
%systemroot%\system32\scrrun.dll
Для работы с регулярными выражениями (VBScript.RegExp):
%systemroot%\system32\vbscript.dll
Для работы с системными цветами (GetSysColor):
%systemroot%\system32\user32.dll
Для работы с ini-файлами (GetPrivateProfileString и WritePrivateProfileString):
%systemroot%\system32\kernel32.dll


Я – любитель-самоучка. Программированием занимаюсь в свободное время, чтобы облегчить выполнение типовых задач на работе.
Представленный проект разрабатывался в Excel 2003 на Windows 7x32 и немного тестировался под более новыми версиями Excel и Windows.
В течение весеннего семестра я обращался с этим проектом в профильные ВУЗы города – хотел при помощи преподавателей соответствующих дисциплин и студентов оптимизировать алгоритмы и убрать недостатки, на что у меня самого не хватает опыта, а главное – времени.
Но выбранные мною методика и среда программирования оказались не актуальны. ВУЗы работают с нейронными сетями и другими проявлениями искусственного интеллекта.
Мне будут интересны любые адекватные замечания по этому проекту.
В меру своих возможностей готов помочь в дальнейшей работе.


Положительные качества макроса и пояснения некоторых решений
1. Возможность создавать одновременно список каталогов и файлов.
2. Широкие возможности выбора файлов, включаемых в список.
1) Для выбора файлов по типам (по расширениям) создано 2 списка:
а) слева – типы файлов с их описанием. Этот список хранится в текстовом файле. Файл может быть открыт для редактирования пользователем из формы.
б) справа – типы файлов из реестра (HKEY_LOCAL_MACHINE\SOFTWARE\Classe s).
Списки могут синхронизироваться при загрузке формы. В каждом списке остаются только уникальные записи.
В списках доступно выделение нескольких строк. Создана возможность автоматизированной очистки выделенных строк.
2) Для выбора файлов по именам используются регулярные выражения.
Создана подробная инструкция по их использованию.
Большинство пользователей редко применяют регулярные выражения. Поэтому для помощи в работе с этим способом анализа имён файлов была создана специальная форма. Она позволяет оперативно, без вывода списка файлов на лист, проверить, будут ли выполняться условия отбора файлов.
Список применяемых пользователем регулярных выражений хранится в текстовом файле. Новые строки добавляются в файл в диалоговом режиме. Файл может быть открыт для редактирования пользователем из формы.
Можно сказать, что пользовательский список расширений файлов является излишним. Конечно, теоретически, он не нужен, ведь все типы файлов можно прочитать из реестра. Поэтому список пользователя – это ``избранное`` из списка по реестру. К тому же пользователь может выстраивать свой список в удобном ему порядке, дополнять расширения файлов их описаниями (отображаются в форме) и комментариями (доступны только в файле списка).
После синхронизации списков при первом запуске макроса пользователь может сохранить синхронизированный (уменьшенный) список в новый файл для ускорения последующих синхронизаций.
В списке пользователя одно расширение может быть указано несколько раз, например, с разными описаниями. Это особенно удобно перед синхронизаций списков при первом запуске макроса, т.к. разные программы могут использовать одинаковые расширения файлов.
3. Возможность использовать несколько групп параметров для выбора различных файлов (группы параметров связаны логическим ``или``).
4. Возможность выделения в списке файлов по заданным параметрам особым оформлением (варианты начертания шрифта, цвет шрифта и фона).
5. При описании выбранных параметров оформления используются названия цветов, выбираемые по созданному алгоритму из более чем 1000 вариантов (названия взяты с двух сайтов).
Имеется возможность вывести в новый документ этот список названий цветов (с примерами и RGB-кодами).
6. Возможность выводить в список не только имя файла, но и его размер в различных форматах, даты создания и изменения, атрибуты.
7. Возможность выводить в список указанные выше данные о файлах в нескольких столбцах или в одном столбце с именем файла.
8. Проверяется корректность вводимых пользователем данных.
9. Возможность сохранять параметры создания списка (состояние элементов управления формы) и расположение формы в ini-файле или в реестре. Сохранение в реестре – не видно пользователю. Сохранение в ini-файле – позволяет перенести настройки на другой компьютер.


Недостатки
К сожалению, у меня не было времени на полноценное исправление следующих замеченных недостатков:
1. Возможны не корректные результаты при обработке особых каталогов: первый и нижний каталоги в списке, пустые каталоги на разных уровнях, каталоги с закрытым доступом и т.д.
2. Не создаёт список в виде
C:\Каталог\Файл1.txt
C:\Каталог\Файл2.txt
Не было времени делать эту функцию, тем более, что в таком виде список создают многие другие макросы.
3. Использование регулярных выражений для выбора файлов по именам, не позволяет исключить файлы, содержащие в имени определённые слова. Например, не получится не включать в список файлы со словом ``копия`` в имени.
4. Отсутствует возможность обновить уже существующий список в файле Excel в соответствии с изменениями в каталоге компьютера.
5. Всего 5 параметров оформления каталогов и файлов (шрифт: полужирный, курсив, подчёркнутый, цвет: шрифта и фона).
6. Не обрабатываются специфические метаданные файлов (например, EXIF).
7. Автоматически может сохраняться и загружаться при запуске формы только один набор параметров создания списка (состояния элементов управления формы).
8. Нет прокрутки мышью списка параметров. Однако это, скорее, проблема самого VBA, что нет стандартных средств для прокрутки мышью. Но здесь на неё особенно обращаешь внимание.
9. Скорее всего, невозможна обработка сетевых ресурсов.

С уважением,
Георгий Данилов


'Служебная информация. Удалить после прочтения
Уважаемый Администратор!
1. Я знаю, что есть несколько подобных тем на форуме. Однако решил создать новую тему, т.к. мой макрос значительно отличается от других.
К тому же объём кода, написанного мною ``с нуля`` (без модуля анализа цвета ColorsName, но считая комментарии, справочные сообщения, строки-пробелы и типовые команды, не объединяемые в цикл) – около 11,5 тыс. строк. Скорее всего, будут обсуждения, которые тоже удобнее вести в отдельной теме.
2. Макрос будет выложен ещё на нескольких форумах – с которых я тоже получил много полезной информации. Ссылки напишу, когда мои сообщения пройдут там модерацию.
George87 вне форума   Ответить с цитированием
Старый 12.07.2017, 10:35   #2
vefer
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 121
Репутация: 10
По умолчанию

Больше всего порадовала фраза: Служебная информация. Удалить после прочтения. Не проще купить внешний жесткий диск на 1Тб для резервного копирования? Это заменит около 200 дисков и по цене дешевле выйдет.
vefer вне форума   Ответить с цитированием
Старый 12.07.2017, 15:01   #3
kuklp
Профессионал
 
Регистрация: 02.05.2010
Адрес: Украина, Днепропетровск.
Сообщений: 1,390
Репутация: 152

icq: 4190413
skype: pilipnik
По умолчанию

Я свой каталогизатор написал еще в 1999 году под Экс5. И с тех пор он мне ни разу не понадобился. Тотал коммандер с лихвой покрывает потребности. Так что кроме спортивного интереса написать, другой пользы от него я не вижу
__________________
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума   Ответить с цитированием
Старый 12.07.2017, 15:07   #4
George87
 
Регистрация: 05.07.2017
Сообщений: 4
Репутация: 10
По умолчанию

Проблема с вирусами, ведь надо сделать так, чтобы в момент создания резервной копии они не попали на этот внешний жёсткий диск, ведь компьютер постоянно подключён к интернету. Да, конечно, антивирус есть, но всё же были случаи заражения...
Кстати, возвращаясь к теме: если внешний жёсткий диск не подключён постоянно, всё равно нужно иметь файл со списком содержимого этого диска
George87 вне форума   Ответить с цитированием
Старый 13.07.2017, 00:43   #5
IgorGO
МегаМодератор
СуперМодератор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Адрес: УКРАЇНА, Київ
Сообщений: 9,174
Репутация: 1811

icq: 7934250
skype: i2x0,5
По умолчанию

Цитата:
нужно иметь файл со списком содержимого этого диска
кнопка Windows
cmd
в открывшемся окне:
dir c:\ /s >c:\DirDisckC.txt
теперь у Вас в корне диска С есть файл DirDisckC.txt, котором записано, все что у вас находится на диске С
__________________
41001804815208 - Яндекс-деньги благодарности за удачные советы и решения можно отправлять прямо сюда)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума   Ответить с цитированием
Старый 13.07.2017, 15:08   #6
George87
 
Регистрация: 05.07.2017
Сообщений: 4
Репутация: 10
Хорошо

Да-да
Ещё в школе узнал про dir и Total Commander.
Самые быстрые и простые способы!
Но сейчас пользоваться списком в текстовом файле мне не удобно.
Вот и написал этот макрос, пока было время и вдохновение.
George87 вне форума   Ответить с цитированием
Старый 13.07.2017, 17:13   #7
vefer
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 121
Репутация: 10
По умолчанию

Цитата:
Сообщение от George87 Посмотреть сообщение
Проблема с вирусами
Пользуйтесь линуксом.
vefer вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Treeview как в проводнике windows Viiktorrr Помощь студентам 0 21.04.2014 16:20
Возврат всех файлов изи дерева каталогов kilogram PHP 2 31.05.2012 15:09
как создать список файлов? c++ learner Общие вопросы C/C++ 3 28.11.2010 20:24


19:39.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.