Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Узнать через vba, содержит ли файл определенный макрос?
 
Добрый день! Подскажите, пожалуйста, возможно ли через макрос узнать, есть ли в данной книге макрос с определенным именем, в частности, Workbook_open? Спасибо!
 
Код
With ActiveWorkbook.VBProject.VBComponents("ЭтаКнига")
        lCountLines = .CodeModule.CountOfLines
        lStartLine = .CodeModule.CountOfDeclarationLines + 1
        For li = lStartLine To lCountLines
            sProcName = .CodeModule.ProcOfLine(li, 0)
            If sProcName = "Workbook_Open" Then
                MsgBox "Блок обработки события Open уже существует"
                Exit Sub
            End If
            li = li + lProcLineCount
        Next li
    End With
Каждому For свой Next
 
у меня аналогичный вопрос:
а можно макросом узнать есть-ли в книге макрос, который ищет макрос с определенным именем, например Workbook_open, чтобы понимать нужно в эту книгу добавить макрос поиска макроса или он уже там есть
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Можно, кстати, и без перебора строк это сделать. Здесь показывал как и расписывал: Как узнать существует ли модуль в книге
Применимо конкретно к ЭтаКнига будет так:
Код
    Dim lProcLineNum As Long, vMdl
    Dim sProcName As String
    sProcName = "Workbook_Open"
    Set vMdl = ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.CodeName)
    On Error Resume Next
    'ProcStartLine - встроенная функция
    ' ищет в указанном модуле(vMdl) номер строки с именем заданной процедуры
    lProcLineNum = vMdl.CodeModule.ProcStartLine(sProcName, 0)
    If lProcLineNum > 0 Then
        MsgBox "Функция найдена"
        Exit Sub
    End If
Изменено: Дмитрий(The_Prist) Щербаков - 20 Авг 2019 10:20:33
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, здорово! Большое спасибо  
Страницы: 1
Читают тему (гостей: 1)
Наверх