En este artículo, crearemos una macro para eliminar otra macro de un módulo.

Estamos usando Module1, que contiene SampleProcedure como macro de muestra, que queremos eliminar.

ArrowMain

ArrowRawData

Explicación del código

Establecer VBCM = WB.VBProject.VBComponents (DeleteFromModuleName) .CodeModule El código anterior se utiliza para crear un objeto del módulo definido.

ProcStartLine = VBCM.ProcStartLine (Nombre del procedimiento, vbext_pk_Proc)

El código anterior se utiliza para obtener el número de línea de inicio del procedimiento definido.

ProcLineCount = VBCM.ProcCountLines (Nombre de procedimiento, vbext_pk_Proc)

El código anterior se utiliza para obtener el recuento del número de líneas en el procedimiento definido.

VBCM.DeleteLines ProcStartLine, ProcLineCount El código anterior se utiliza para eliminar todas las líneas dentro del procedimiento definido.

Siga a continuación el código

Option Explicit

Sub DeleteProcedureCode(ByVal DeleteFromModuleName As String, ByVal ProcedureName As String)

'Declaring variables

Dim VBCM As CodeModule, ProcStartLine As Long, ProcLineCount As Long

Dim WB As Workbook

On Error Resume Next

'Creating object of active workbook

Set WB = ActiveWorkbook

'Creating object of workbook module

Set VBCM = WB.VBProject.VBComponents(DeleteFromModuleName).CodeModule

'Checking whether the procedure exist in the codemodule

If Not VBCM Is Nothing Then



ProcStartLine = 0



'Function assigning the line no. of starting line for the procedure

ProcStartLine = VBCM.ProcStartLine(ProcedureName, vbext_pk_Proc)



If ProcStartLine > 0 Then



'Function assign the no. of lines in the procedure

ProcLineCount = VBCM.ProcCountLines(ProcedureName, vbext_pk_Proc)



'Delete all the lines in the procedure

VBCM.DeleteLines ProcStartLine, ProcLineCount



End If

Set VBCM = Nothing

End If

On Error GoTo 0

End Sub

Sub CallingProcedure()

'Declaring variables

Dim ModuleName, ProcedureName As String

'Getting value for module and procedure name from textboxes

ModuleName = Sheet1.TextBox1.Value

ProcedureName = Sheet1.TextBox2.Value

'Calling DeleteProcedureCode macro

DeleteProcedureCode ModuleName, ProcedureName



End Sub

Si te gustó este blog, compártelo con tus amigos en Facebook y Facebook.

Nos encantaría saber de usted, háganos saber cómo podemos mejorar nuestro trabajo y hacerlo mejor para usted. Escríbanos a [email protected]