Хранение файлов и файловый менеджер в файле(листе) Excel, Бинарное хранение данных в CustomProperty листа Excel - VBA
Запись от bedvit размещена 31.10.2017 в 10:32
Показов 15620
Комментарии 23
Метки vba
|
В продолжении темы и темы. Получилось просто и вполне удобно, решил сохранить в блоге. В дальнейшем возможно развитие, новые алгоритмы и новые версии. Кратко: Хранение файлов и простенький файловый менеджер в файле(листе) Excel, Бинарное хранение данных в CustomProperty листа (Open FileName As Binary и Get, Put через байт-массив). Запуск с параметрами хранимых файлов. Максимальная простота и переносимость - нет форм, модулей уровня проекта, классов и т.д., все в модуле листа "ByteSheet(Storage)". Переносим лист (переносятся и загруженные данные) в другой файл, готово! Или копируем код (загруженные данные НЕ переносятся) с листа "ByteSheet(Storage)" на свой лист - и ваш лист становится файловым менеджером! Работа с файлами: ---> Как через МЕНЮ - работает стандартно через менеджер макросов (пользовательское стартовое меню "ByteSheet.START_MENU", в котором можно выбрать нужное действие и открыть нужное меню) ---> Так и используя ФУНКЦИИ напрямую в вашем проекте/надстройке, обычном файле Excel, поддерживающим макросы. Функции возвращают количество загруженных, выгруженных, удаленных файлов в случае успеха. 1."DownloadF" - Загрузка любых файлов (в т.ч. архивов, которые можно распаковать автоматом при выгрузке - ZIP), поддерживается пакетная загрузка. 2."UnloadF" - Выгрузка(в т.ч. пакетная)/Запуск файлов с параметрами. Поддерживается следующий функционал/параметры: 2.1 Выгрузка в выбранную папку, "по умолчанию" выгружаются в пользовательский "TEMP". 2.2 Выбор файла(ов) для выгрузки/запуска, "по умолчанию" выгружаются/запускаются все файлы. 2.3 Обновление файл(ов) в папке при распаковки, если он(и) там уже есть (выгружен(ы) ранее или есть с совпадающим именем), по умолчанию: не обновляем 2.4 Распаковка из архива ZIP, по умолчанию: выгружаем архив, без распаковки 2.5 Открыть файл в Excel после распаковки, по умолчанию: не открываем 2.6 Запуск файл после распаковки, приложением "по умолчанию" (для архива - один файл в один архив, в обратном случае, загрузится первый попавшийся из распакованного архива), по умолчанию: не запускаем 2.7 Запуск файла с нужными параметрами. Используется вместе с параметром 2.6 (аналогично командной строке с параметрами, без указания самого файла - полный путь к файлу автоматом подставляется), по умолчанию: без параметров. 2.8 Запуск файла, даже если он открыт в каком-либо процессе (запускать еще раз), по умолчанию: не запускаем. Все эти параметры Optional, если их нет - функция выполняется с параметрами по умолчанию. 3."DeleteF" - Удаление файлов, в т.ч. пакетное. Ниже исходники (лист ByteSheet(Storage)) и пример использования - модуль "Test" (расчет числа Пи). В загруженных файлах секретных данных и вирусов нет. Результаты стресс-тестирования: Загрузить (файлов - 432 шт), Выгрузить (файлов - 432 шт), Удалить (файлов - 432 шт) Общий размер файлов - 1 334 МБ (1,33 ГБ) Время выполнения всех трех операций в сумме - 25 сек. Размер книги Excel с файлами - 1,2 ГБ в формате .xlsb P.S. Отдельная благодарность! Андрей VG, за любезно предоставленные алгоритмы, которые были несколько доработаны и дополнены для этих целей. 21/11/2017 Обновление версии: Loader_02 1. Процедуры переписаны в функции, которые возвращают при успешном выполнении, количество загруженных, удаленных, выгруженных файлов. 2. Добавлена пакетная загрузка файлов (выгрузка и удаление всех файлов уже было в первой версии) с корректным счетчиком (скриншот прилагаю). 3. Добавлено описание к коду и аргументам функций. 4. Добавлен запуск файлов как "приложением по умолчанию" так и через Excel. 5. Добавлен обработчик ошибок, с выводом сообщений об ошибке. 6. Добавлен запрос/вопрос пользователю на перезапись выгружаемых и загружаемых файлов, если они уже есть. 22/03/2018 Обновление версии: Loader_03 1. Добавил стартовое меню (скриншот прилагаю). 2. Добавил поддержку командной строки (на примере расчета числа Пи - программа упакована моя, вирусов нет.). 3. Изменил порядок параметров для функций на более логичный. 22/04/2018 Обновление версии: Loader_04 1. Добавил команду "ОТКРЫТЬ" в стартовом меню с поддержкой командной строки (скриншот прилагаю). Zip-файлы, при этом, сначала распаковываются, потом запускается первый файл в распакованной папке (поэтому рекомендуется хранить по одному файлу в архивах). 2. Изменил переход по листам с символов "<", ">" на "-","+" - удобно использовать цифровой блок клавиатуры. 3. Добавил возврат в меню при неверно введенных данных. 07/06/2018 Обновление версии: Loader_05 1. Добавил проверку при запуске файла, открыт ли он в другом процессе с возможностью открыть повторно или не открывать (по умолчанию) 2. Исправил ошибку, возникающих в случаях когда имя выгружаемого файла совпадало с папкой и папку нужно было удалять. 3. Исправил ошибку, возникающих в случаях когда распаковывается один и тот же архив с обновлением данных (удалением старых) в целевой папке. 4. Исправлена ошибка возникающая при загрузке файлов размером в нечётное количество байтов. 5. Добавлена возможность указать при загрузке папку (добавил новый параметр в функцию загрузки), без указания файлов, тогда загружаются все файлы из папки. 30/05/2022 Обновление версии: Loader_06 1.Исправлениа ошибка выбора папки в функции DownloadF (ранее выбиралась как папка по умолчанию, в исправленной версии выбирается указанная папка явно) 2.Закомментировал в примере распаковку из .zip-файла и запуск .exe (иногда вызывает рефлексию антивируса, хотя вредоносного функционала там нет) |
Метки vba
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 23
Комментарии
-
22/04/2018 Обновление версии: Loader_04
1.Добавил команду "ОТКРЫТЬ" в стартовом меню (скриншот прилагаю). Zip-файлы, при этом, сначала распаковываются, потом запускается первый файл в распакованной папке (рекомендуется хранить по одному файлу в архиве).
2.Изменил переход по листам с символов "<", ">" на "-","+" - удобно использовать цифровой блок клавиатуры.
3.Добавил возврат в меню при неверно введенных данных.Запись от bedvit размещена 23.04.2018 в 13:14
-
Молодец, пускай делает, не прикапывайтесь, всегда легче облить ушатом критики чем самому чтото подобное сделать
то-что надстройки распаковываются и вставляются в проект vba это очень интересно, я тоже чтото такое делаю
не надо тут слюни пускать насчет, опасности для предприятий, дык мы то тут на что ?
мы можем прямо тут разработать средство проверки этой опасности если таковая найдется, почему бы нет
я там вам тоже ответил, позже увидел ссыль на Ваш блог
https://www.cyberforum.ru/vba/... st12365445 (пост № 3)Запись от fever brain размещена 05.05.2018 в 17:14
-
Запись от bedvit размещена 07.05.2018 в 17:52


