Proteger/desproteger libro Excel con código VBA

Estoy intentando de dar con el código correcto para proteger un libro o archivo Excel con código VBA. Para daros una idea he llegado hasta construir este y bloque el libro al iniciarse tal como quiero...

ActiveWorkbook.SaveAs Filename:=xlOpenXMLWorkbookMacroEnabled, Password:=CLV, CreateBackup:=False

Lo que ocurre es que SaveAs es para "Guardar como" y lo que quiero que lo haga en el mismo libro el cual quede grabado. He realizado varias pruebas poniendo Save pero no me lo admite. Si alguien se le ocurre cómo se lo agradecería.

2 Respuestas

Respuesta

Tu pregunta tiene 2 temas ja ja

ActiveWorkbook. Save
Sheets("Hoja1").Protect Password="hola"
Sheets("Hoja1"). UnProtect Password="hola"

La primera línea es para guardar los cambios
Y la segunda y tercer línea son para bloquear y desbloquear las hojas.

Hola Daniel, no se trata de las hojas y tampoco de la estructura,... se trata de proteger el libro en sí. Es hacer y deshacer esto pero con macros, no se si me he explicado bien. Gracias.

Ir a "Archivo" > "Proteger libro" > "Cifrar con contraseña" > y en "Cifrar documento" introducir la contraseña.

http://trucosycursos.es/proteger-libros-excel-con-contrasena-de-apertura/ 

Es hacer esto mismo pero con códigos.

En este caso solo usamos la misma estructura de la línea de guardado, por ejemplo:

Sub algo()
ActiveWorkbook.Unprotect Password = "hola"
Cells(1, 1) = "algo"
ActiveWorkbook.Protect Password = "hola"
End Sub

la primera linea de código quita la protección con la contraseña
Coloca algo en una celda y posteriormente la vuelve a proteger.

Hola Daniel, estos códigos ya los conocía y este último lo que hace es proteger la estructura no el libro que era lo que yo quería. Más abajo Abraham ha expuesto el que estaba buscando.

Muchas gracias por tomarte tu tiempo en ayudar, saludos.

Respuesta
1

[Hola

El método Save no tiene parámetros, por lo que no podrás lograrlo usándolo, necesariamente tienes que usar SaveAs, pero para no tener el dilema de crear otro archivo, basta desactivar las alertas para que reemplace el existente:

Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
    "C:\Users\Abraham-PC\Documents\PruebaPass.xlsm", FileFormat:= _
        xlOpenXMLWorkbookMacroEnabled, Password:="tuclave", CreateBackup:=False
Application.DisplayAlerts = True

Evidentemente tú remplaza la ruta y nombre del archivo por los tuyos, así como la clave (Password), o si las tienes en variables, igual, solo reemplazas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas