MulTEx -группа Книги/Листы -Книги -Удаление макросов
Команда удаляет выбранные компоненты(модули, процедуры, функции) VBA проекта. Когда это может пригодится? Например, если в файле сначала было создано несколько макросов для обработки отчета. Но после обработки отчет необходимо отправить без макросов. Если все они находятся в одном модуле - это не проблема. Но если коды раскиданы по разным модулям, плюс еще есть Пользовательские формы(UserForm), Модули классов(ClassModule) и коды в листах - времени может потребоваться немало. Так же есть и другой вариант: файл прислали по почте и в него необходимо вносить какие-либо изменения, но в файле макросы, которые мешают делать это корректно и удобно(например, в файле есть обработки событий и т.п.).
Помимо этого в команде есть еще одна удобная возможность - удалять только те модули, в которых нет ни одной полезной строки кода(т.е. нет ни объявления переменных и констант, ни процедур, ни функций - словом, никаких "нужных" макросов). В дополнение такие модули помечаются неактивной иконкой и сразу можно понять, есть ли какие-то рабочие коды в модуле или нет.
Так же команда может пригодиться тем, кто плохо знаком с макросами и не знает где их искать и как удалять, но удалить их все же надо.
Команда представляет собой форму с удобной схемой всех VBA модулей и процедур в них:
Пустые модули(без значащих строк кода) отображены на схеме неактивной(серой) иконкой. Пустыми считаются те модули, в которых нет ни одной значащей строки кода.
Значащими строками кода считаются:
- любые процедуры и функции
- строки объявления переменных и констант, пользовательских типов, функций API и т.п.(
,Dim ,Const ,Public ,Private ,Static ,Type и т.п.)Declare
Если в модуле есть строки деклараций (
В самом верхнем уровне идут 4 основных типа объектов:




Каждый тип в свою очередь в раскрывающемся списке содержит информацию о всех своих модулях. Модули, в которых нет ни одной процедуры или функции, а так же нет строк объявления переменных, констант, типов, функций API и т.п. считаются "пустыми" и отмечаются неактивной(серой) иконкой типа модуля.
Если отметить галочкой непосредственно тип (
Особым образом здесь стоит отметить модули Листов и ЭтаКнига. Главная особенность этих модулей в том, что модули листов не удаляются в любом случае. Все потому, что модули листов это по сути сами листы и коды записываются непосредственно в лист(правая кнопка мыши на ярлыке листа -Исходный текст) и удалить модуль можно только удалив лист из книги. А на листе могут быть полезные данные. Модуль ЭтаКнига и вовсе нельзя удалить, т.к. это сама книга Excel и удалить этот модуль можно только удалив саму книгу. Но эти модули можно полностью очистить от кодов, выбрав нужные модули галочкой.
Каждый модуль представляет собой список функций и процедур внутри него. Т.к. процедуры и функции могут быть разных типов, то каждому типу присваивается своя иконка:





Если навести курсор мыши на конкретный модуль, то появится подсказка с информацией об общем количестве значащих строк в области объявлений(объявление переменных, констант, функций API и т.п.), количестве процедур и функций:
Удалять только модули без процедур и значащих строк в области объявлений
-
Если на этом пункте установлена галочка, то среди отмеченных модулей и типов удалены будут только те модули, в которых нет ни одной значащей строки кода. Не применяется к модулям листов и ЭтаКнига, т.к. данные типы модулей нельзя удалить из проекта. Однако, если эта галочка установлена, то коды листов и книг очищаются даже от незначащих строк кода.
На примере первой картинки: если отметить галочкой полностью типы Стандартные модули (Modules), то будут удалены все модули(Module4, Module3). Несмотря на то, что Module4 содержит некие функции и процедуры. Если же при этом поставить галочку Удалять только модули без процедур и значащих строк в области объявлений, то удален будет только Module3, т.к. он не содержит никаких нужных строк кода.
Примечание: VBA проект книги, из которой планируется удаление макросов не должен быть защищен, иначе появится окно, сообщающее о наличии защиты. Макросы не будут удалены.
Также см.:
Как программно снять пароль с VBA проекта?
Копирование модулей и форм из одной книги в другую
Как удалить книгу из самой себя
Скажите где и как вы вызываете окно удаления макросов.
Я не могу его нигде найти....(ни в каких меню)
У вас оно в виде картинки, а откуда она взялась ???????
Когда создавал файл (минипрограмка) наделал кучу макросов (экспериментировал и искал то что надо), а удалить их теперь не могу. Все внутренности у них постирал, а сами они остались и каждый раз при запуске вылезает сообщение о них...
Сергей, посмотрите на заголовок: эта команда часть моей надстройки MyAddin. Сразу под заголовком есть ссылка на описание всех её команд и функций.
Сегодня я это понял:)))http://www.excel-vba.ru/tag/fajly/
Но дело в том, что я смотрел "Удаление макросов из активной книги" со страницы
Архив
Публикации с меткой ‘Файлы’
и вот там нет ссылки на "Надстройка MyAddin".
Поэтому и написал этот пост...