Форум программистов, компьютерный форум, киберфорум
bedvit
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

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

Вложения
Тип файла: zip Loader_06.zip (272.8 Кб, 505 просмотров)
Метки vba
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 23
Комментарии
  1. Старый комментарий
    Аватар для bedvit
    22/04/2018 Обновление версии: Loader_04
    1.Добавил команду "ОТКРЫТЬ" в стартовом меню (скриншот прилагаю). Zip-файлы, при этом, сначала распаковываются, потом запускается первый файл в распакованной папке (рекомендуется хранить по одному файлу в архиве).
    2.Изменил переход по листам с символов "<", ">" на "-","+" - удобно использовать цифровой блок клавиатуры.
    3.Добавил возврат в меню при неверно введенных данных.
    Запись от bedvit размещена 23.04.2018 в 13:14 bedvit вне форума
  2. Старый комментарий
    Аватар для fever brain
    Молодец, пускай делает, не прикапывайтесь, всегда легче облить ушатом критики чем самому чтото подобное сделать
    то-что надстройки распаковываются и вставляются в проект vba это очень интересно, я тоже чтото такое делаю

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

    я там вам тоже ответил, позже увидел ссыль на Ваш блог
    https://www.cyberforum.ru/vba/... st12365445 (пост № 3)
    Запись от fever brain размещена 05.05.2018 в 17:14 fever brain вне форума
  3. Старый комментарий
    Аватар для bedvit
    Цитата Сообщение от fever brain
    я там вам тоже ответил, позже увидел ссыль на Ваш блог
    https://www.cyberforum.ru/vba/... st12365445 (пост № 3)
    ОК, благодарю.
    Запись от bedvit размещена 07.05.2018 в 17:52 bedvit вне форума
 
Новые блоги и статьи
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru