Macro para guardar libro protegido contra escritura

5 envíos / 0 nuevos
Último envío
Mendi_Negro
Imagen de Mendi_Negro
Offline
última acción: Hace 6 años 3 meses
alta: 29/11/2017 - 14:16
Puntos: 45
Macro para guardar libro protegido contra escritura

Buenas,

Tengo unos análisis de laboratorio en un libro excel que genero con un macros. Como esos análisis son revisados por muchas personas no quiero que nadie modifique los originales por lo que quiero protegerlos contra escritura con una contraseña aleatoria que coja de una celda del propio libro que se genera. ¿Como podría añadir esa función al macros? No es necesario que yo conozca la contraseña aunque se quede bloqueado contra escritura para siempre.

Gracias a todos por adelantado.

Etiquetas: 

Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 1 día
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
Sería algo así como

Sería algo así como:

Activesheet.protect "contraseña"

Para generar una contraseña aleatoria, puedes jugar con la función RND y con CHR, sabiendo que los rangos de letras son: 

mayúsculas: 65-90

minúsculas: 97-122

Para un código de 8 caracteres, sería algo así:


Dim a As Long

Dim pass As String

Dim upper As Boolean

Dim min As Long

Dim max As Long

 

    pass = ""

    For a = 1 To 8

        upper = (Rnd > 0.5)

        If upper Then

            min = 65

            max = 90

        Else

            min = 97

            max = 122

        End If

        pass = pass + Chr(Int((max - min + 1) * Rnd + min))

    Next

 

Cells(1, 1).Value = pass


 

Lo que hago es escribir la contraseña en la celda A1, pero perfectamente la puedes utilizar como parámetro de protect (eso sí, no podrás desproteger porque nunca sabrás la contraseña) (salvo si buscas por internet "cómo desproteger una hoja de excel", claro)

 

Un saludo

Mendi_Negro
Imagen de Mendi_Negro
Offline
última acción: Hace 6 años 3 meses
alta: 29/11/2017 - 14:16
Puntos: 45
Era justo eso

Muchas gracias, es justo lo que necesitaba :D 

Una duda extra ¿hay alguna función en la que solo se proteja con contraseña el guardado del documento? Asi se podria usar el documento de forma normal pero a la hora de guardalo te obilgase a usar un nombre distinto al original, sería el equivalente de hacer de forma manual 

Guardar como -> Herramientas -> Contraseña de escritura

Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 1 día
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
Puedes programar en VBA el

Puedes programar en VBA el evento Workbook.BeforeSave

El problema que tiene esto es que si no tienes activadas las macros, el evento no se lanzará y se guardará machacando lo anterior.

Si tienes control sobre las máquinas donde trabajan los usuarios, puedes activar las macros, o puedes instalarles la respuesta a este evento como un complemento.

Un saludo

Mendi_Negro
Imagen de Mendi_Negro
Offline
última acción: Hace 6 años 3 meses
alta: 29/11/2017 - 14:16
Puntos: 45
¡Perfecto! ¡Muchas gracias!

¡Perfecto! ¡Muchas gracias!