Цель макросом из личной книги макросов при его запуске обновить рабочий файл до последней версии. Помимо изменений в структуре данных, также требуется отредактировать часть кода существующих макросов зашитых в этот рабочий файл.
Можно ли получить как-то содержимое макроса из открытой книги в переменную, а потом replace- ом заменить необходимый кусок и перезаписать его?
в примере можно обращаться к модулю, который содержит макрос, будем надеяться с ним сработает 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
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...