Форум программистов, компьютерный форум, киберфорум
Наши страницы
bedvit
Войти
Регистрация
Восстановить пароль
Рейтинг: 2.33. Голосов: 3.

Хранение файлов и файловый менеджер в файле(листе) Excel, Бинарное хранение данных в CustomProperty листа Excel - VBA

Запись от bedvit размещена 31.10.2017 в 10:32
Обновил(-а) bedvit 28.06.2018 в 12:36 (Структурировал описание продукта)

В продолжении темы и темы.
Получилось просто и вполне удобно, решил сохранить в блоге. В дальнейшем возможно развитие, новые алгоритмы и новые версии.
Кратко: Хранение файлов и простенький файловый менеджер в файле(листе) 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. Добавлена возможность указать при загрузке папку (добавил новый параметр в функцию загрузки), без указания файлов, тогда загружаются все файлы из папки.
Миниатюры
Нажмите на изображение для увеличения
Название: START_MENU.png
Просмотров: 56
Размер:	70.9 Кб
ID:	4782   Нажмите на изображение для увеличения
Название: Загрузить_пакет.PNG
Просмотров: 41
Размер:	88.1 Кб
ID:	4783   Нажмите на изображение для увеличения
Название: Выполнить2.PNG
Просмотров: 34
Размер:	102.0 Кб
ID:	4791  

Вложения
Тип файла: zip Loader.zip (84.8 Кб, 140 просмотров)
Тип файла: zip Loader_02.zip (86.6 Кб, 22 просмотров)
Тип файла: zip Loader_03.zip (267.0 Кб, 16 просмотров)
Тип файла: zip Loader_04.zip (282.3 Кб, 10 просмотров)
Тип файла: zip Loader_05.zip (279.6 Кб, 3 просмотров)
Размещено в Без категории
Просмотров 959 Комментарии 23
Всего комментариев 23
Комментарии
  1. Старый комментарий
    Аватар для bedvit
    По безопасности: Добавляем данный лист в свой проект .xlam, загружаем нужные библы, отключаем макросы у пользователей, ставим свою надстройку с нужными библами - готово. Пользователь доволен, продукт работает, риска нет.
    Запись от bedvit размещена 24.11.2017 в 20:16 bedvit вне форума
  2. Старый комментарий
    Аватар для Avazart
    Цитата:
    Правда и в этом случае злоумышленник может заменить надстройку на свой вариант.
    Каким это образом? Если ставится будет как полагается в системные папки то заменить без должных прав не удастся.

    А вот эксель с сюрпризом внутри вызывает сомнения и подозрения в источнике подобной лабуды.
    Кстати, а что говорят антивирусы на ваш эксель проверяли?
    Запись от Avazart размещена 25.11.2017 в 00:28 Avazart вне форума
  3. Старый комментарий
    Аватар для bedvit
    Касперский говорит, что угроз нет. Если вы посмотрите на одно сообщение выше вашего, там я описал как безопасно можно использовать сей продукт. Ну а выстрелить в ногу себе можно разными способами. Код можно хранить и просто на листах и запускать через Workbook_Open. Да тысячи их способов. Добавил новую версию, см.блог.
    Запись от bedvit размещена 25.11.2017 в 15:21 bedvit вне форума
  4. Старый комментарий
    Аватар для Avazart
    Я имел ввиду сканирование на https://www.virustotal.com
    Запись от Avazart размещена 25.11.2017 в 15:49 Avazart вне форума
  5. Старый комментарий
    Аватар для bedvit
    Цитата:
    Сообщение от Avazart Просмотреть комментарий
    Я имел ввиду сканирование на https://www.virustotal.com
    Результат: https://www.virustotal.com/#/file/91...3533/detection
    Запись от bedvit размещена 26.11.2017 в 15:23 bedvit вне форума
  6. Старый комментарий
    Аватар для bedvit
    22/04/2018 Обновление версии: Loader_04
    1.Добавил команду "ОТКРЫТЬ" в стартовом меню (скриншот прилагаю). Zip-файлы, при этом, сначала распаковываются, потом запускается первый файл в распакованной папке (рекомендуется хранить по одному файлу в архиве).
    2.Изменил переход по листам с символов "<", ">" на "-","+" - удобно использовать цифровой блок клавиатуры.
    3.Добавил возврат в меню при неверно введенных данных.
    Запись от bedvit размещена 23.04.2018 в 13:14 bedvit вне форума
  7. Старый комментарий
    Аватар для fever brain
    Молодец, пускай делает, не прикапывайтесь, всегда легче облить ушатом критики чем самому чтото подобное сделать
    то-что надстройки распаковываются и вставляются в проект vba это очень интересно, я тоже чтото такое делаю

    не надо тут слюни пускать насчет, опасности для предприятий, дык мы то тут на что ?
    мы можем прямо тут разработать средство проверки этой опасности если таковая найдется, почему бы нет

    я там вам тоже ответил, позже увидел ссыль на Ваш блог
    http://www.cyberforum.ru/vba/thread2113574.html#post12365445 (пост № 3)
    Запись от fever brain размещена 05.05.2018 в 17:14 fever brain вне форума
  8. Старый комментарий
    Аватар для bedvit
    Цитата:
    Сообщение от fever brain Просмотреть комментарий
    я там вам тоже ответил, позже увидел ссыль на Ваш блог
    http://www.cyberforum.ru/vba/thread2113574.html#post12365445 (пост № 3)
    ОК, благодарю.
    Запись от bedvit размещена 07.05.2018 в 17:52 bedvit вне форума
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru