obj.VBProject.VBComponents(1).CodeModule.AddFromString "Sub Макрос1" & vbCrLf & "MsgBox ""Hello!""" & vbCrLf & "End Sub" 'где obj -- это Workbook или ActiveDocument
' начало процедуры
ProcStart = ActiveWorkbook.VBProject.VBComponents("Module1").CodeModule.ProcStartLine "УдалямыйМакрос", vbext_pk_Proc
'количество строк
ProcCount = ActiveWorkbook.VBProject.VBComponents("Module1").CodeModule.ProcCountLines "УдалямыйМакрос", vbext_pk_Proc
'удаляем
ActiveWorkbook.VBProject.VBComponents("Module1").CodeModule.DeleteLines ProcStart, ProcCount
ProcName = "УдалямыйМакрос"
With ActiveWorkbook.VBProject.VBComponents("Module1").CodeModule
.DeleteLines .ProcStartLine (ProcName, vbext_pk_Proc),.ProcCountLines (ProcName, vbext_pk_Proc)
End With
ActiveWorkbook.VBProject.VBComponents("Module1").Name="MySuperModule"
ActiveWorkbook.VBProject.VBComponents.Remove ActiveWorkbook.VBProject.VBComponents("Module1")
dr.MIG писал(а):Однако будет сообщение об ошибке.
Владимир7 писал(а):сообщения об ошибке не было
dr.MIG писал(а):Добавлять можно, на форуме уже был этот пример:
- Код: Выделить всё
obj.VBProject.VBComponents(1).CodeModule.AddFromString "Sub Макрос1" & vbCrLf & "MsgBox ""Hello!""" & vbCrLf & "End Sub" 'где obj -- это Workbook или ActiveDocument
Однако будет сообщение об ошибке.
Кроме того у CodeModule есть метод DeleteLines. Судя по названию он делает то, что требуется.
Сейчас этот форум просматривают: AhrefsBot и гости: 34