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.
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 para obtener el código
Opción Explícita Sub DeleteProcedureCode (ByVal DeleteFromModuleName como cadena, ByVal ProcedureName como cadena) 'Declarando variables Dim VBCM como CodeModule, ProcStartLine tan largo, ProcLineCount tan largo Dim WB como libro de trabajo en caso de error Reanudar Siguiente' Creando objeto de libro activo Establecer WB = ActiveWorkbook 'Creando objeto del módulo del libro de trabajo Establecer VBCM = WB.VBProject.VBComponents (DeleteFromModuleName) .CodeModule 'Verificando si el procedimiento existe en el codemodule Si no VBCM es nada, entonces ProcStartLine = 0' Función que asigna la línea no. de la línea de inicio para el procedimiento ProcStartLine = VBCM.ProcStartLine (nombreProcedimiento, vbext_pk_Proc) Si ProcStartLine> 0 Entonces 'Función asignar el no. de líneas en el procedimiento ProcLineCount = VBCM.ProcCountLines (ProcedureName, vbext_pk_Proc) 'Eliminar todas las líneas en el procedimiento VBCM.DeleteLines ProcStartLine, ProcLineCount End If Set VBCM = Nothing End If On Error GoTo 0 End Sub Sub CallingProcedure ()' Declarar variables Dim ModuleName, ProcedureName As String 'Obteniendo valor para el módulo y el nombre del procedimiento de los cuadros de texto ModuleName = Sheet1.TextBox1.Value ProcedureName = Sheet1.TextBox2.Value' Llamando a la macro DeleteProcedureCode DeleteProcedureCode ModuleName, ProcedureName End Sub
Si te gustó este blog, compártelo con tus amigos en Facebook. Además, puede seguirnos en Twitter y Facebook.
Nos encantaría saber de usted, háganos saber cómo podemos mejorar nuestro trabajo y hacerlo mejor para usted. Escríbanos al sitio de correo electrónico