ELIMINAR UNA MACRO UTILIZANDO OTRA MACRO

Hola a todos:

Hace unos días un lector me enviaba una consulta acerca de cómo podía eliminar una macro utilizando otra macro.

Aunque no suele ser muy habitual este tipo de procedimientos, dado que implica que si nos equivocamos podemos eliminar código o macros por equivocación, la verdad es que me pareció interesante para publicar en la web.

Antes de comenzar con el ejercicio, para que la macro funcione es necesario realizar unas modificaciones en el centro de confianza de nuestro programa de Excel. Para hacerlo, debéis entrar en Archivo > Opciones y pulsar en Centro de Confianza:

ELIMINAR UNA MACRO UTILIZANDO OTRA MACRO

A continuación se mostrará esta otra pantalla:

ELIMINAR UNA MACRO UTILIZANDO OTRA MACRO1

Elegimos la opción Configuración de macros y activamos la casilla que pone: Confiar en el acceso al modelo de objetos de proyectos de VBA, y aceptamos.

Es importante que realicemos este paso, si no lo hacemos la macro que os voy a mostrar generará un error y no se ejecutará.

Ahora veamos dos formas de realizar el borrado de nuestros procesos. Por una parte podemos eliminar el contenido de un módulo entero, aunque tenga varios sub o funciones. Simplemente queremos vaciar de contenido todo el módulo.

Para realizar esto, este es el código que podemos utilizar:

Sub Borrar_módulo()
'Declaramos variables
Dim modulo As String
'Eliminamos todo el contenido del módulo que indiquemos
modulo = "Módulo1"
With ThisWorkbook
.VBProject.VBComponents(modulo).CodeModule.DeleteLines 1, .VBProject.VBComponents(modulo).CodeModule.CountOfLines
End With
End Sub

En este caso estamos eliminando todo el contenido del módulo 1, si quisiéramos borrar el contenido “ThisWorkBook”, simplemente lo indicamos en la macro sustituyéndolo en la macro.

Pero también puede que solo deseemos eliminar un procedimiento concreto y no todo. Para eso, utilizaremos el siguiente código:

Sub Borrar_macro()
'Declaramos variables
Dim fin As Long
Dim inicio As Long
Dim modulo As Object
'Indicamos el módulo en el que queremos borrar la macro
Set modulo = ThisWorkbook.VBProject.VBComponents("Módulo1").CodeModule
'Indicamos el nombre del procedimiento o macro a eliminar
With modulo
inicio = .ProcStartLine("Borrar_módulo", vbext_pk_Proc)
fin = .ProcCountLines("Borrar_módulo", vbext_pk_Proc)
.DeleteLines inicio, fin
End With
End Sub

En este caso borraremos solo este código especificando el nombre de la subrutina anterior (Borrar_módulo) y que esté incluida en el módulo 1 de nuestro proyecto de VBA.

Obviamente podremos cambiar los valores en función de nuestra necesidades.

No voy a dejar archivo de ejemplo porque no estoy interactuando con la hoja ni vamos a crear datos, y no creo que sea necesario dado que solo necesitáis el código para y leer el post para poder realizar el ejemplo por vosotros mismos. De todas formas si tenéis dudas, me comentáis.

Por cierto, cuidado con este tipo de programaciones, recordad que estamos borrando código y debéis ser muy cuidadosos a la hora de programar, ¿ok?.

Eso es todo, espero que os haya gustado!. : )

¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.

Donate Button with Credit Cards

¡¡Muchas gracias!!

Anuncios