Eliminar macros de un archivo de Excel. ¡Úsese con cuidado!

Este ejemplo es de los catálogados como “está usted seguro?” por el tipo de código que contiene y las posibles macros que elimine.

Por qué querría borrar macros de un archivo de Excel

El código que comparto, sí, elimina todo el código de nuestros objetos y módulos de VBA, pero también nos ilustra sobre los elementos que contiene un proyecto VBA y sus componentes, obviamente manipulados mediante el mismo lenguaje.

Cómo funciona

El ejemplo hace uso de los objetos que contiene otro archivo, en este caso llamado Libro2.xlsx, que para efecto de pruebas lo tuve que crear y abrir el mismo tiempo.

Eliminar macros de Excel 3

Figura 1. Ingresamos el nombre del archivo en una celda de Excel.

Pero también podemos mandar llamar la ruta completa el archivo, o mejor aún, adecuar el código con un formulario personalizado para buscarlo desde el explorador de Windows.

Email Puedes revisar el sienguiente ejemplo de uso de un formulario para mostrar ruta completa de un archivo Mostrar archivos PDF en Formulario de Excel vba.

La macro detecta los objetos y módulos del proyecto VBA y define si hay líneas de código a eliminar. Si encuentra líneas de código pregunta sobre si deseas eliminarlas o no. Al final muestra un resumen de los objetos afectados y las líeneas de código eliminadas.

Eliminar macros de Excel

Figura 2. Un mensaje nos pregunta sobre si deseamos eliminar las líneas de código.

Eliminar macros de Excel 2

Figura 3. Un mensaje al final nos da un resumen de lo eliminado.

Código vba

El botón que se encuentra en la Hoja de Excel manda llamar al siguiente procedimiento.

Option Explicit
'
Sub EXCELeINFOBorrarMacros()
'
'Se declaran variables
'
Dim strTitulo As String
Dim strNombre As String
Dim strResp As String
Dim intModulosAfectados As Integer
Dim intLineasEliminadas As Integer
Dim intLineasEliminadas1 As Integer
Dim intNumLineas As String
Dim strNombreArchivo As String
Dim vbModulo As VBComponent
'
'Se inicializan variables
strTitulo = "EXCELeINFO"
strNombreArchivo = Sheets("Hoja1").Range("rngNombreArchivo").Value
intModulosAfectados = 0
intLineasEliminadas = 0
'
On Error GoTo Errores
'
'Se recorren todos los módulos y objetos del archivo
'
For Each vbModulo In Workbooks(strNombreArchivo).VBProject.VBComponents
    strNombre = vbModulo.Name
    intNumLineas = vbModulo.CodeModule.CountOfLines
    If intNumLineas > 0 Then
        strResp = MsgBox("Está seguro de eliminar todo el código del objeto " & vbModulo.Name & _
                         " con " & intNumLineas & " líneas.", vbYesNo + vbQuestion, strTitulo)
        If strResp = vbYes Then
            intLineasEliminadas = vbModulo.CodeModule.CountOfLines
            vbModulo.CodeModule.DeleteLines 1, vbModulo.CodeModule.CountOfLines
            intModulosAfectados = intModulosAfectados + 1
            intLineasEliminadas1 = intLineasEliminadas + intLineasEliminadas1
        Else
        End If
    Else
    End If
Next vbModulo
'
'Se muestra el resultado de los objetos afectados y líneas eliminadas
'
MsgBox "Se han afectado " & intModulosAfectados & " objeto(s) y se han eliminado " _
       & intLineasEliminadas1 & " línea(s) de código.", vbInformation, strTitulo
Exit Sub
'
'En caso de error de muestra el mensaje
'
Errores:
MsgBox "Ha ocurrido un error: Procura que el archivo exista o esté abierto. " & _
       strNombre & " no existe. " & Err.Description, vbExclamation, strTitulo
End Sub

Anexos

:: Descargar el ejemplo Borrar macros de otro archivo de Excel.zip

También te podría gustar...