Хитрости »
Основные понятия (23)
Сводные таблицы и анализ данных (9)
Графики и диаграммы (5)
Работа с VB проектом (12)
Power BI и Power Query (14)
Условное форматирование (5)
Списки и диапазоны (5)
Макросы(VBA процедуры) (63)
Разное (38)
Баги и глюки Excel (2)

Как узнать существует ли модуль в книге

 

Продолжая цикл статей про работу с проектом VBA решил что будет не лишним привести пример того, как проверить существует ли определенный компонент VBA в проекте. Возможно, это пригодится при внесении изменений в коды: чтобы проверить присутствует ли нужный модуль в книге и если нет - то добавить или завершить процедуру без возникновения ошибки.

Для работы с кодами VB-проекта программно необходимо, чтобы было проставлено доверие к объектной модели проекта VBA и изменяемый проект не должен быть защищен. Подробнее читайте в статье: [[Что необходимо для внесения изменений в проект VBA(макросы) программно]]
Без этого будет невозможно программное вмешательство в проект VBA.

Но для начала, думаю было бы не лишним привести пример кода, который проверяет наличие в книге самого VBA проекта и его доступность для внесения изменений:
ПРОВЕРКА НАЛИЧИЯ ЗАЩИТЫ VBA ПРОЕКТА

'---------------------------------------------------------------------------------------
' Procedure : IsVBProjLock
'             http://www.excel-vba.ru
' Purpose   : Функция проверки наличия защиты у VBA проекта
'             True  - вернет, если проект защищен
'             False - вернет, если проект доступен для внесения изменений
'---------------------------------------------------------------------------------------
Function IsVBProjLock(wbCheck As Workbook) As Boolean
    Dim oVBProj As Object
    Set oVBProj = wbCheck.VBProject
    If Not oVBProj Is Nothing Then
        IsVBProjLock = (oVBProj.Protection <> 0)
    End If
End Function

Вызов функции IsVBProjLock:

Sub Check_VBProjLock()
    MsgBox "VB проект книги " & IIf(IsVBProjLock(ActiveWorkbook), "закрыт", "доступен"), vbInformation
End Sub

Если защита не установлена - функция вернет False и мы можем быть уверены в том, что в данный проект мы сможем внести изменения.

ПРОВЕРКА НАЛИЧИЯ НУЖНОГО МОДУЯ

'---------------------------------------------------------------------------------------
' Procedure : IsModuleExists
'             http://www.excel-vba.ru
' Purpose   : Функция проверки наличия защиты у VBA проекта
' Аргументы функции:
'             sModuleName - имя VBA компонента для проверки
'             objVBProj   - если указан, наличие компонента проверяется в указанном VBA проекте
'                           если не указан - в проекте активной книги
' Результат функции:
'             True        - вернет, если проект защищен
'             False       - вернет, если проект доступен для внесения изменений
'---------------------------------------------------------------------------------------
Function IsModuleExists(sModuleName As String, Optional ByVal objVBProj As Object = Nothing) As Boolean
    If objVBProj Is Nothing Then
        Set objVBProj = ActiveWorkbook.VBProject
    End If
    On Error Resume Next
    IsModuleExists = CBool(Len(objVBProj.VBComponents(sModuleName).Name))
End Function

Вызов функции IsModuleExists:

Sub Check_VBComponentExists()
    MsgBox "Модуль 'Module1' " & IIf(IsModuleExists("Module2"), "существует", "отсутствует"), vbInformation
End Sub

Подобным образом можно проверить не только наличие стандартного модуля, но и любого иного компонента: модули листов и книг, модули классов и пользовательские формы. Достаточно передать в функцию имя нужного компонента.

Также см.:
[[Как проверить открыта ли книга?]]
[[Как узнать существует ли лист в книге?]]
[[Как программно снять пароль с VBA проекта?]]


Статья помогла? Поделись ссылкой с друзьями!
  Плейлист   Видеоуроки

Поиск по меткам

Access apple watch Multex Outlook Power Query и Power BI VBA работа в редакторе VBA управление кодами Бесплатные надстройки Дата и время Диаграммы и графики Записки Защита данных Интернет Картинки и объекты Листы и книги Макросы и VBA Надстройки Настройка Печать Поиск данных Политика Конфиденциальности Почта Программы Работа с приложениями Работа с файлами Разработка приложений Сводные таблицы Списки Тренинги и вебинары Финансовые Форматирование Формулы и функции Функции Excel Функции VBA Ячейки и диапазоны акции MulTEx анализ данных баги и глюки в Excel ссылки
Поделитесь своим мнением

Комментарии, не имеющие отношения к комментируемой статье, могут быть удалены без уведомления и объяснения причин. Если есть вопрос по личной проблеме - добро пожаловать на Форум


Для оформления сообщений Вы можете использовать следующие тэги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Тренинги

Заказать
Юридическая информация

Использование материалов сайта

Политика Конфиденциальности

ИП Щербаков Дмитрий Валентинович
ОГРНИП: 318502700083307
ИНН: 504013350772

Наши партнеры

Перейти
Перейти

Счетчики

Рейтинг@Mail.ru Яндекс.Метрика
© 2018 Excel для всех   Войти