Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Редактирование макроса в книге другим макросом
 
Цель макросом из личной книги макросов при его запуске обновить рабочий файл до последней версии.
Помимо изменений в структуре данных, также требуется отредактировать часть кода существующих макросов зашитых в этот рабочий файл.

Можно ли получить как-то содержимое макроса из открытой книги в переменную, а потом replace- ом заменить необходимый кусок и перезаписать его?
Изменено: Александр - 13 янв 2021 16:04:49
 
Тема не новая, подобный вопрос был здесь, там посмотрите #6, хорошая ссылка.
 
можно давать ссылку сразу на конкретный пост, кликнув по #
пример
Изменено: Jack Famous - 14 янв 2021 09:08:19
Реквизиты для благодарности и контакты для связи — в профиле
 
DANIKOLA, спасибо, буду пробовать

в примере можно обращаться к модулю, который содержит макрос, будем надеяться с ним сработает replace
Жаль нельзя обратиться непосредственно к макросу по его имени например  :(  
 
Цитата
Александр написал:
нельзя обратиться непосредственно к макросу по его имени
почему нет? Если знаете имя, то проблем нет. Например, вот этот код запоминает в переменную res весь текст искомой процедуры/функции:
Код
Sub GetSubText()
    Dim objVBProj As Object
    Dim sProcName As String, res As String
    Dim lProcLineNum As Long, lProcLinesCnt As Long, lProcKind As Long, vMdl
    
    sProcName = "Макрос1" 'имя процедуры или функции, которые ищем
    Set objVBProj = ActiveWorkbook.VBProject
    On Error Resume Next
    
    'цикл по всем модулям проекта(стандартные, классы, формы, листы, книги)
    For Each vMdl In objVBProj.VBComponents
        For lProcKind = 0 To 3
            lProcLineNum = vMdl.CodeModule.ProcStartLine(sProcName, lProcKind)
            If lProcLineNum > 0 Then
                lProcLinesCnt = vMdl.CodeModule.ProcCountLines(sProcName, lProcKind)
                res = vMdl.CodeModule.Lines(lProcLineNum, lProcLinesCnt)
                MsgBox res
                Exit Sub
            End If
        Next
    Next
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Jack Famous написал:
можно давать ссылку сразу на конкретный пост, кликнув по #
а я и не знал) спасибо.
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
почему нет? Если знаете имя, то проблем нет.
Отлично! Спасибо
Страницы: 1
Читают тему (гостей: 1)
Наверх