¿Puedo ocultar o poner contraseña a una hoja de excel pero que al mismo tiempo este activa?

He creado un formulario para digitar datos en excel para una base de datos a través de macros, pero la hoja de base de datos, que tendrá todos los registros, debe de estar oculta, porque las personas con permiso de digitar información, no tienen permiso para ver la base de datos completo. Pero mi macro funciona copiando y pegando los datos del formulario a la hoja de base de datos, y si la oculto solo con la opción "ocultar", la macro me da error, porque no tiene donde pegar los datos ingresados en el formulario. Lo que realmente quiero es que la base de datos completa no puedan ver todos los usuarios con acceso al formulario solamente.

Respuesta

puedes ocultar la hoja con hoja.visible=veryhidden

Solamente la puedes volver a mediante programación o desde el entorno de programación.

Puedes proteger el proyecto con contraseña.

En hoja oculta puedes trabajar lo que quieras siempre que no trates de seleccionar celdas.

Yo uso habitualmente hojas ocultas donde creo el registro de datos y los introduzco modificó y recuperó desde otras hojas o formularios.

2 respuestas más de otros expertos

Respuesta
1

Hay dos formas una que la macro cambie las letras de la base de datos a color blanco range("x:y"). Font.colorindex=2

La otra ocultado totalmente el excel para que solo quede el formulario a la vista

application.visible=false

Aqui iria tu codigo, en el formulario tendrias que poner la primera instruccion en initialize o en activate y en el boton salir o en el boton del formulario X restaurar la visibilidad del excel

application.visible=true

Hola disculpe, me parece bien la segunda opción, que solo el formulario este a la vista, pero como mencione antes, si oculto lo demás, donde se guardan los registros en la base de datos, la macro no me funciona, porque dice que la página donde se pegaran esta oculta. Soy poca de conocimiento en vba

Checa tu programación, que no tengas código para ocultar la hoja, yo he trabajado con macros así y siempre se graban los registros en Excel, Excel sigue activo activo aunque no lo parezca, de hecho antes de enviarte la macro hice pruebas y los registros se capturaban en la hoja sin problemas.

ok esta bien, me da otro error cuando tengo el código "Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True" que se necesita cambiar?

La instrucción en sino me dice nada faltaría ver las instrucciones previas al evento, por ejemplo yo cree un formulario y en el evento initialize puse esta instrucción, la macro le indico al excel que se ocultara y que el contenido de la celda a1 lo copiara a la celda d1 y lo hizo sin problemas para después restaurar la visibilidad de Excel.

Private Sub UserForm_Initialize()
Application.Visible = False
Range("a1").Select
Selection.Copy
Range("d1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
Application.Visible = True
End Sub

Esta es el inicio de mi macro, esas celdas D10,D12... las copio de una hoja, y luego se va a la hoja de "Registro" y busca la ultima fila en blanco, y lo pega en esa hoja. Y luego sigue, hasta copiar mucho mas datos y pegandolos en la la hoja de "Registro", si he agregado al final de la macro "Application.Visible = False" 

"Sub guardarregistro()
'
' guardarregistro Macro
Application.ScreenUpdating = False
Application.Visible = False
Range("D10,D12,D14,D16,D18,D20").Select
Selection.Copy
Sheets("Registro").Activate
Range("A8").Activate
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Activate
Loop
ultimafila = ActiveCell.Row
ActiveSheet.Range("A" & ultimafila).Select
Range("A" & ultimafila & ":F" & ultimafila).Activate
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True"

Tu macro funciona bien mira hace bien la copia en registro, ¿pon una pantalla de tus datos aunque no se para que quieres un ciclo do while?. La macro oculta el excel y hace la copia sin problema alguno

Respuesta

Como estás puedes poner en la macro que la desproteja y al finalizar la macro la vuela a proteger así:

sub macroxx()

ActiveSheet.Unprotect Password:="1610"   ' Desprotege la hoja y realiza el procedimiento sin restricción

tu procedimiento aca

ActiveSheet.Protect Password:="1610" 'Vuelve a proteger la hoja con las mismas caracteristicas que tenía antes, es decir escenarios, si se puede o no seleccionar celdas bloqueadas etc.

End sub

Te paso el link que ejecuta un determinado procedimiento ingresando password por si lo necesitas en el tema de seguridad que intentas dar a tus hojas.

https://youtu.be/GsEU-yDUJwI

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas