Vba Excel Удалить Файл Если Существует • Исходные данные

Защита проекта VBA в MS Excel

Всем привет! Я обычный пользователь MS Excel. Не являющийся профессиональным программистом, но накопивший достаточно опыта, для установки и обхода защиты проектов VBA.

В данной статье рассмотрены виды защиты проектов VBA, от несанкционированного доступа. Их сильные и слабые стороны – ранжирование.

Цель статьи показать слабые и сильные стороны каждого вида защиты проекта VBA в MS Office.

Демонстрация разработанных инструментов, в надстройке Macro Tools VBA, для снятия и установки той или иной защиты.

Все инструменты реализованы стандартными средствами VBA, без использования дополнительных библиотек.

Vba Excel Удалить Файл Если Существует • Исходные данные

Первый вид защиты — Обычный пароль

Недостаток: быстрый доступ к запароленному модулю VBA

Самая легко снимающаяся защита. В интернете легко находится код, для снятия данной защиты.

Vba Excel Удалить Файл Если Существует • Исходные данные

Второй вид защиты — Project is Unviewable

Vba Excel Удалить Файл Если Существует • Исходные данные


Большинство пользователей Excel, не могут снять данную защиту, так как она имеет множество вариации и нюансов, для ее снятие нужно иметь представление о внутренней структуре файла Excel.

Vba Excel Удалить Файл Если Существует • Исходные данные

Кратко, как создается данная защита

Для создания данной защиты нужно, разархивировать файл Excel. Перейти в архиве в папку xl, открыть файл vbaProject.bin, в конце файла находятся наши ключи, редактируем значения ключей на пусто, сохраняем файл. Переводим наш архив, обратно в файл Excel. Готово!

Это самый простой вариант данной защиты, но существует множество модификаций.

Vba Excel Удалить Файл Если Существует • Исходные данные

6) Открываем файл. Если все правильно сделано то, Excel, будет ругаться на не правильные ключи, которые мы отредактировали, в пункте 3. Жмем, да, пока данные сообщения не закончатся и диалоговое окно закроется.

Если данное сообщение не появляется то, вы отредактировали не файл который содержит проект VBA.

Vba Excel Удалить Файл Если Существует • Исходные данные

7) Открываем проект VBA. После всего, проект VBA должен быть доступен.

8) Но иногда защита не снимается, тогда нужно сохранить файл, проверить, что он действительно сохранился! И проделать повторно операции с 1 по 7. Обычно так происходит когда в файле workbook.xml.rels в ключе Target установлено printerSettings.bin.При сохранение, Excel исправляет это на значение на vbaProject.bin

Данную защиту можно установить и снять следующим инструментом:

Vba Excel Удалить Файл Если Существует • Исходные данные

Третий вид защиты — Hidden Module, скрытые модули VBA

Время на снятие: от 15 до 20 мин (нужен редактор OLE — объектов, Structured Storage Viewer, например.

Vba Excel Удалить Файл Если Существует • Исходные данные

Кратко, как создается данная защита

Vba Excel Удалить Файл Если Существует • Исходные данные

Для снятия данной защиты нужно в файле vbaProject.bin — восстановить удаленные записи модулей.

Данную защиту можно установить следующим инструментом.

Vba Excel Удалить Файл Если Существует • Исходные данные

Четвертый вид защиты — Обфускация кода

Время на снятие: неизвестно, зависит от объема кода и пере использования частей кода

Vba Excel Удалить Файл Если Существует • Исходные данные

Недостаток: необходимость тестирование файла после обфускации, на работоспособность

Для де-обфускации кода нужно иметь время, специализированное ПО.

Данную защиту можно установить следующим инструментом.

Vba Excel Удалить Файл Если Существует • Исходные данные

Пятый вид защиты — Перенос кода в dll

Время на снятие: неизвестно, зависит от языка программирования и квалификации

Недостаток: необходимости в дополнительном файле dll

Один из самых редких видов защиты. Основная идея перенос основного кода в отдельную библиотеку dll, написанную на любом другом языке программирования. Не распространённость данный вид защиты получил по следующей причине, необходимости за файлом Excel, «таскать» дополнительный файл, dll.

Для получения доступа к коду dll, нужно обладать специальными знаниями.

Заключение

[expert_bq id=»1570″]Ограничений по длине имени файла, вроде как, нет по крайней мере, за много лет использования этого кода на тысячах компов, с проблемами не сталкивался. Если же вы хотите что-то уточнить, обращайтесь ко мне![/expert_bq] У меня почему-то размер файла в байтах выводится абсолютно иной, иногда даже с отрицательным значением.
Пример:
1.вес файла 3 840 327 Кб или 3,66 Гб, а таблица выдает «-362 472 675»
2.вес файла 5 082 087 Кб или 4,84 Гб, таблица выдает «909 089 137»
Vba Excel Удалить Файл Если Существует • Исходные данные

Получение списка файлов в папке и подпапках | Макросы Excel

С помощью кода VBA Excel можно редактировать только имя листа Name, отображаемое на ярлычке листа и в проводнике без скобок. Для этого используется свойство рабочего листа Worksheets.Name со следующим синтаксисом:

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: