Не вышло изменить макрос =(
ни при попытке обратиться к самому макросу:
Код |
---|
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 = "КвазиИнтерполAll" 'имя процедуры или функции, которые ищем
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)
'MsgBox lProcLinesCnt
ChangeMe = vMdl.CodeModule.Lines(lProcLineNum, lProcLinesCnt)
'Часть макроса которую хотим поменять
Text1 = "RowsStart = 120"
'Часть макроса на который хотим поменять
Text2 = "RowsStart = 124"
'в текстовой переменной производим замену нужного участка кода
ChangeMe = Replace(ChangeMe, Text1, Text2)
'записываем изменения в макрос
vMdl.CodeModule.Lines(lProcLineNum, lProcLinesCnt) = ChangeMe
'vMdl.CodeModule.ProcCountLines(sProcName, lProcKind) = lProcLinesCnt
MsgBox ChangeMe
Exit Sub
End If
Next
Next
End Sub |
ни при попытке обращения к модулю
Код |
---|
Sub ChangeSubText()
'имя модуля для копирования
sModuleName = "Season"
On Error Resume Next
'проект книги, из которой копируем модуль
'Set objVBProj = ActiveWorkbook.VBProject
Set objVBProj = ThisWorkbook.VBProject
'необходимый компонент
Set objVBComp = objVBProj.VBComponents(sModuleName)
'Часть макроса которую хотим поменять
Text1 = "RowsStart = 120"
'Часть макроса на который хотим поменять
Text2 = "RowsStart = 124"
'objVBComp = Replace(objVBComp, Text1, Text2)
objVBProj.VBComponents(sModuleName) = objVBComp.ReplaceLine(130, "RowsStart = 124")
End Sub |
Раз объекты как таковые существуют и к ним можно обращаться, то способ их изменить должен быть, но не понимаю что именно я делаю не так.