VBA, solo lectura
pirate
-
eriiic Mensajes publicados 24581 Fecha de registro Estado Colaborador Última intervención -
eriiic Mensajes publicados 24581 Fecha de registro Estado Colaborador Última intervención -
Hola a todos,
Estoy tratando de asegurar al máximo un archivo cuando se abre en solo lectura.
Me explico, cuando se abre el archivo, solicita una contraseña o abrirlo en solo lectura; si lo abro en solo lectura, me gustaría bloquear la entrada de datos, el guardado, etc.
Estoy en:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
If Me.ReadOnly = True Then
Application.Undo
MsgBox "Este archivo está en solo lectura, no se permite la entrada de datos"
ThisWorkbook.Saved = True
End If
Application.EnableEvents = True
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If ActiveWorkbook.ReadOnly = True Then
SaveAsUI = False
Cancel = True
End If
End Sub
El problema es que a veces aparece el cuadro de diálogo que pregunta si quiero guardar el documento al cerrarlo, permitiendo así el guardado como.
El objetivo de todo esto es evitar que mis colegas (muy, muy, muy novatos en Excel) que lo utilizarán creen múltiples copias del mismo documento.
¡Gracias de antemano por su ayuda!
Estoy tratando de asegurar al máximo un archivo cuando se abre en solo lectura.
Me explico, cuando se abre el archivo, solicita una contraseña o abrirlo en solo lectura; si lo abro en solo lectura, me gustaría bloquear la entrada de datos, el guardado, etc.
Estoy en:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
If Me.ReadOnly = True Then
Application.Undo
MsgBox "Este archivo está en solo lectura, no se permite la entrada de datos"
ThisWorkbook.Saved = True
End If
Application.EnableEvents = True
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If ActiveWorkbook.ReadOnly = True Then
SaveAsUI = False
Cancel = True
End If
End Sub
El problema es que a veces aparece el cuadro de diálogo que pregunta si quiero guardar el documento al cerrarlo, permitiendo así el guardado como.
El objetivo de todo esto es evitar que mis colegas (muy, muy, muy novatos en Excel) que lo utilizarán creen múltiples copias del mismo documento.
¡Gracias de antemano por su ayuda!
2 respuestas
Un método que no es muy bonito consiste en usar esto:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Close False
End Sub
Esto tendrá el efecto de cerrar el libro de Excel sin pedir guardar el archivo, pero también dejará una ventana de Excel gris vacía.
Seguro que hay una mejor manera, pero este funciona.
Que tengas un buen día.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Close False
End Sub
Esto tendrá el efecto de cerrar el libro de Excel sin pedir guardar el archivo, pero también dejará una ventana de Excel gris vacía.
Seguro que hay una mejor manera, pero este funciona.
Que tengas un buen día.
Hola,
un poco tarde, pero tal vez sirva de algo.
Puedes prescindir de la supervisión de las modificaciones.
'Guardar como...', a la izquierda del botón Guardar tienes un menú desplegable Herramientas.
En Opciones generales puedes elegir una contraseña para prohibir las modificaciones más una casilla para marcar Lectura recomendada.
En tu caso, aún queda por tratar el Guardar como y el Cerrar.
eric
--
Al intentar continuamente, al final se logra.
Así que cuanto más fallemos, más oportunidades tenemos de que funcione. (los Shadoks)
Además de dar las gracias (¡sí, sí, eso se hace!!!), recuerda marcar como resuelto. Gracias.
un poco tarde, pero tal vez sirva de algo.
Puedes prescindir de la supervisión de las modificaciones.
'Guardar como...', a la izquierda del botón Guardar tienes un menú desplegable Herramientas.
En Opciones generales puedes elegir una contraseña para prohibir las modificaciones más una casilla para marcar Lectura recomendada.
En tu caso, aún queda por tratar el Guardar como y el Cerrar.
eric
--
Al intentar continuamente, al final se logra.
Así que cuanto más fallemos, más oportunidades tenemos de que funcione. (los Shadoks)
Además de dar las gracias (¡sí, sí, eso se hace!!!), recuerda marcar como resuelto. Gracias.
He encontrado otras cosas que funcionan muy bien.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Me.ReadOnly = True Then
Application.ThisWorkbook.Saved = True 'Informa a Excel que el archivo ya ha sido guardado (esto evita que se pida guardar al cerrar)
End If
End Sub