Como deshabilitar mediante código las macros contenidas en el archivo Excel

Tengo un código que me realiza las copias de seguridad del archivo excel, creado por gentileza de Dante Amor. Lo que pretendo es que en la copia del seguridad del archivo original queden desactivadas las macros contenidas. Si necesitáis este código, no dudéis en pedírmelo.

1 respuesta

Respuesta
1

Debes indicar tu versión Excel, y si la copia se realiza con instrucción del tipo SaveAs o SaveCopyAs.

Sdos

Elsa

Trabajo con excel 2003 y el procedimiento es SaveAs.

Muchas gracias por tu interés .

Leo que la rutina es de Dante... entonces dejaré que él la complete.

Sdos!

¡Gracias! 

Como no te han respondido, aquí te dejo la macro que necesitas.

Fui a tu historial para revisar el código que ya te pasaron. En la última macro tenés al final la opción de guardar:

ActiveWorkbook.SaveAs _
                Filename:=ruta2 & "\" & Archivo, FileFormat:=xlWorkbookNormal
    '
End Sub

Entonces si a este libro hay que quitarle las macros, justo antes del End Sub debes colocar la llamada:

Call sincodigo

Y en un módulo colocá la suguiente macro así la conservas para ser llamada desde cualquier otra instancia. Al finalizar vuelve a guardar el libro y recién ahí se cierra.

Sub sincodigo()
'x Elsamatilde
'el libro acaba de guardarse, por lo que ahora es el libro activo
'y aquí ahora eliminamos las macros
With Application.VBE.ActiveVBProject
'se recorre desde 1 hasta el total de objetos del proyecto
For ele = 1 To .VBComponents.Count
'se cuentan las líneas en el objeto que se está observando
LineasCod = .VBComponents(ele).CodeModule.CountOfLines
'si el total de líneas es > 0 elimina las líneas
If LineasCod > 0 Then
.VBComponents(ele).CodeModule.DeleteLines 1, LineasCod
End If
'se repite el bucle para el próximo objeto del proyecto
Next ele
End With
'volvemos a guardar el libro, ahora sin macros
ActiveWorkbook.Save
End Sub

Con este método se borran todos los códigos, tanto de las hojas como de los módulos o userforms que pudieras tener. (*)

Para remover los módulos o userforms vacíos se necesita otra macro. (*)

Si tu libro tiene estos objetos, con mucho gusto te pasaré la otra macro si la necesitas. Por favor en consulta aparte.

(*) Material extraído de mi manual 400Macros.

Sdos y no olvides valorar la respuesta.

Elsa

Gracias, Elsa; pero da error en esta línea del código:

With Application.VBE.ActiveVBProject

¿Seguro qué estas trabajando en Excel 2003?

Si

Elsa, ¿seria más sencillo deshabilitarlos?

Si tuvieses versión 2007 en adelante, bastaría con algo tan simple como guardarlo como xlsx, pero en tu versión desde las opciones siempre se puede volver a habilitar las macros.

¿Si abrís una copia creada (o cualquier otro libro) que contenga en un módulo la macro 'sincodigo' que te envié y la ejecutas... seguramente verás que se guarda sin códigos o no?

Podría aclararte el motivo, pero esperaré a que me lo confirmes.

Sdos!

Gracias, de nuevo, Elsa; pero no puedo guardar un libro ejecutando esa macro "sincodigo" porque, como ya te dije da error en la línea que te comenté en el post anterior.

Saludos.

No, no... yo te solicitaba que abras una copia o cualquier libro con macros, le agregues mi módulo y lo ejecutes. Solo para comprobar que la rutina es correcta para tu versión. Porque creo entender tu problema pero debo asegurarme primero de que la macro te corre adecuadamente.

PD) no olvides hacer una copia del libro que vas a utilizar para la prueba... porque mira que el código se borrará ;)

Sdos!

De acuerdo, entendido. Para asegurarnos realizaré la prueba mañana en la oficina que es donde trabajo con excel 2003. Te cuento...

Buenas noches, aquí en España; en Córdoba buenas tardes.

Saludos

He realizado la comprobación que me pediste, y sigue dando error en la siguiente línea de código:

With Application.VBE.ActiveVBProject

Saludos

Qué raro ... este código lo he utilizado por años, incluso acabo de probarlo.

Dejame un correo o escribime al mío que lo verás aquí.

Así te envío las 2 macros que utilizo en estos casos.

Sdos

Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas