Protección en VBA

21/02/2005 - 01:51 por pepefras | Informe spam
Tengo una parte del código que elimina las macros de un libro de una sola
hoja, aqui esta:

'Borra las macros
ActiveSheet.Select
Set Modulos = ActiveWorkbook.VBProject.VBComponents
For Each Modulo In Modulos
Select Case Modulo.Type
Case VBExt_ct_StdModule, VBExt_ct_MSForm, _
VBExt_ct_ClassModule
Modulos.Remove Modulo
Case Else
With Modulo.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next
Set Modulos = Nothing

'Continua el código..

todo funciona muy bien y fue gracias al código que me facilitó KL y tambien
ayudó sago (ver exposiciones del 17 y 18-02-05 "Borrar macros"), pero...

de acuerdo con lo indicado por KL en otra exposición del 17-02-05 ("ocultar
contraseña"), protejí el proyecto VBA y por ese motivo no me borra las
macros entonces cero que al código arriba indicado le faltará añadir unas
lineas de desprotección para poder borrar las macros en cuestion.
Agradecido como siempre a vuestra inestimable ayuda.
Pepe Frasquet
 

Leer las respuestas

#1 Héctor Miguel
21/02/2005 - 03:13 | Informe spam
hola, pepe !

... codigo que elimina las macros de un libro de una sola hoja, aqui esta: [...]
... funciona muy bien... pero... protejí el proyecto VBA y... no me borra las macros
... faltara añadir unas lineas de desproteccion para poder borrar las macros [...]



[hasta donde se] quitar contrseñas a proyectos de macros [vba]... por macros...
1° requiere 'enviar' una secuencia de teclas sendkeys al proyecto de macros...
[por omision] se esta 'afectando' ->al libro 'activo'<- [en la interfase de hojas de calculo]
2° [ademas] para estar 'en condiciones' de quitar passwords al vba de 'X' libro [en especifico]...
nos 'tendremos que' asegurar de...
- abrir el editor vba...
- cerrar TODA 'instancia' de modulo abierto...
- cerrar el editor de vba
- 'activar' el libro 'apropiado'
- 'repetir' la secuencia de teclas, pero ahora incluyendo la clave de proteccion del proyecto
3° NO 'olvidar' que, una vez 'desprotegido' un proyecto vba... ->seguira SIN password<- [en la sesion]
aun [re]protegiendolo, sera indispensable cerrarlo y abrirlo de nuevo para que 'se active' la [re]proteccion
4° [solo comentarte que] el codigo que estas usando 'elimina' TODOS los codigos [no solo el de la hoja 'activa']
[ademas de que 'le sobra' la instruccion 'ActiveSheet.Select'... estas usando ->ActiveWorkbook<-]

te pongo unos ejemplos en seguida...
saludos,
hector.
en un modulo de codigo 'normal' ==Sub Quitar_PassWord_VBA()
Application.SendKeys "%{f11}{l 4}%q", True
Workbooks("Libro X").Activate
Application.SendKeys "%{f11}^r{down}AquiTuPassWoRd~%q", True
End Sub
Sub Poner_PassWord_VBA()
Workbooks("Libro X").Activate
Application.SendKeys "%{f11}^r%hp^{pgdn}{+}{tab}AquiTuPassWoRd{tab}AquiTuPassWoRd~%q"
' la siguiente linea es ->opcional<-, puedes NO cerrarlo, pero... seguira SIN password :(
Workbooks("Libro X").Close True
End Sub

Preguntas similares