Попробуйте следующий Sub
, пожалуйста. Требуется ссылка на «Microsoft Visual Basi c для расширяемости приложений 5.3». Удаляет процедуру из модуля активного документа. Код может быть легко адаптирован для удаления из любой открытой рабочей книги:
Private Sub DeleteProc(moduleName As String, procName As String)
'It needss a reference to 'Microsoft Visual Basic for Applications extensibility 5.3'
Dim VBCodeM As CodeModule, firstLine As Long, procLines As Long, WB As Workbook
Set WB = ActiveWorkbook 'you can use a different workbook
On Error Resume Next
Set VBCodeM = WB.VBProject.VBComponents(moduleName).CodeModule
If Err.Number = 9 Then
Err.Clear: On Error GoTo 0
MsgBox "No module named """ & moduleName & """ in workbook """ & WB.Name & """."
Exit Sub
End If
On Error GoTo 0
'starting line for the procedure
On Error Resume Next
firstLine = VBCodeM.ProcStartLine(procName, vbext_pk_Proc)
If Err.Number = 35 Then
Err.Clear: On Error GoTo 0
MsgBox "No procedure named """ & procName & """ in module """ & moduleName & """."
Exit Sub
End If
On Error GoTo 0
If firstLine > 0 Then
'number of lines in the procedure
procLines = VBCodeM.ProcCountLines(procName, vbext_pk_Proc)
'Delete all the lines
VBCodeM.DeleteLines firstLine, procLines
End If
End Sub