Impedir guardar cambios en un libro

Hola!
Tengo una macro que puede ser abierta por un usuario o por el administrador.
Quisiera que cuando fuera abierta por el usuario, éste no pudiera guardar cambios en el libro que contiene la macro (llamémosle libro_fuente) en ningún momento (sé cómo evitar que se guarden cambios al cerrar el libro, pero no cómo impedirlo si el usuario intentara guardara los cambios desde el menú de Excel).
Hasta ahora había configurado los formularios para que no se pudiera trabajar sobre el libro (u otros) mientras éstos estuvieran activados, pero resulta un poco incómodo.
Tampoco quisiera proteger el libro, porque la macro me ha dado algunos errores por ello.
¿Alguien me puede ayudar?
Muchas gracias de antemano!
1

1 respuesta

1
Respuesta de
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Aqui pon tu validacion de si es usuario o administrador y luego lo demas
Cancel = True
MsgBox "No se permite grabar este archivo"
End Sub
Hola experto,
Lo primero, muchas gracias por contestar.
Este es el código que he probado, pero me da error:
Public usuario as string
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
If usuario="Cliente" then 
Cancel = True 
MsgBox "No se permite grabar este archivo" 
end if
End Sub
El usuario se carga a través de un listbox en un formulario. ¿Alguna idea de por qué no funciona?
Un saludo!
En ThisWorkBook, en el evento Workbook_BeforeSave, debes poner el código
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
'aqui debes hacer referencia al userform y al objeto donde tienes el usuario
If Userform1.Label1 = "Cliente" then 'por ejemplo
Cancel = True 
MsgBox "No se permite grabar este archivo" 
end if
End Sub
Saludos
Hola experto, muchas gracias por la ayuda y el interés.
Al final el problema estaba (o eso he deducido después de probar la solución propuesta y comprobarlo mediante msgbox que sacaban el valor de usuario en cada parte), en que al no intentar guardar el libro a continuación de la inserción de usuario, el valor que se le había dado a esta variable se pierde, por lo que pasado un tiempo, al ir a guardar el libro, dicha variable aparece vacía. Lo que he hecho finalmente es dejar una marca en una celda de qué usuario ha iniciado sesión, para que este valor se mantenga.
Seguramente habrá soluciones mejores que esta del método piedra, pero aquí lo dejo por si a alguien más le sirviera de ayuda.
Un saludo!
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje
¿No es la pregunta que estabas buscando?
Puedes explorar otras preguntas del tema Microsoft Excel o hacer tu propia pregunta: