Poner contraseña en visual basic thisworkbook

Tengo una función en ThisWorkbook que elimina el libro al llegar a una fecha de caducidad, ahora requiero colocar una contraseña para protección, la cual, al colocar una contraseña errónea, ejecute el borrado de la hoja

Respuesta

I. Hola Jose, aunque por mí parte no soy conocedor sólo lector, quisiera trasladarle la información que vi sobre este tema por si pudiese serle de alguna utilidad mientras le atiende un experto de primera mano. Le ruego me disculpe todas las molestias de lectura y el tipo de respuesta. Mucho ánimo.

https://ayudaexcel.com/foro/index.php?/topic/28380-ayuda-con-macro-para-proteger-libro-y-hojas-con-contrase%C3%B1a/ 

https://stackoverflow-com.translate.goog/questions/3690793/how-to-protect-excel-workbook-using-vba?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc 

https://forum-ozgrid-com.translate.goog/forum/index.php?thread/131357-username-and-password-vba-with-the-ability-for-user-to-change-the-password/&_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc 

https://excelchamps.com/vba/protect-workbook/ 

https://stackoverflow-com.translate.goog/questions/73276337/vba-code-to-add-password-to-current-workbook-not-working?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc 

https://stackoverflow.com/questions/75715014/open-thisworkbook-by-password-without-prompt

https://stackoverflow.com/questions/73276337/vba-code-to-add-password-to-current-workbook-not-working 

https://www-mrexcel-com.translate.goog/board/threads/vba-script-to-automatically-apply-password-to-workbook-when-closing-prompt-user-for-pw-when-opening-and-setting-to-read-only-if-input-incorrect.1212562/?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc

https://es.stackoverflow.com/questions/169087/excel-vba-proteger-hojas-con-contrase%C3%B1a 

https://es.stackoverflow.com/questions/566988/proteger-y-desproteger-una-hoja-de-excel-con-python  

https://www-vbforums-com.translate.goog/showthread.php?864071-Adding-a-Password-protect-function-when-creating-excel-files-from-worksheets&_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=sc 

https://foro.todoexcel.com/threads/c%C3%B3digo-vba-para-colocar-contrase%C3%B1a-de-apertura-a-un-libro-de.21078/ 

https://www.youtube.com/watch?v=MGeVQge2q2Q 

https://www.youtube.com/watch?v=KbjIu8I3mi4 

https://www.youtube.com/watch?v=H0kb9U0szHM 

https://stackoverflow.com/questions/26274712/vba-password-protect-excel-workbook-without-save 

1 respuesta más de otro experto

Respuesta
3

Recibida tu consulta. Pero no me queda claro qué contraseña necesitas.

Si es una contraseña para Abrir el libro, tendrás que guardalo con una contraseña de apertura. Desde la ventana de 'Guardar como', en Herramientas, Opciones Generales, te permite el ingreso de la clave.

Si se trata de colocar una contraseña para acceder a cierta hoja (confirma x favor si de esto se trata) lo que debes comentar es si necesitas que se borre el contenido de la hoja o que se la elimine?

Quedo atenta a tus aclaraciones.

Gracias estimada por contestar, bien requiero poner una contraseña para acceder al archivo, y en caso que sea errónea,,, que elimine el archivo,,, por ahora yengo esta en ThisworkBook que lo elimina por fecha,,, pero quiero que se elimine en caso de contraseña incorrecta

ExecuteExcel4Macro ("show.toolbar(""ribbon"", 1)")

Dim fecha As Date
Dim wb As Workbook

Application.DisplayFormulaBar = False

fecha = "06/12/2024"
Set wb = ThisWorkbook

If fecha <= Date Then
MsgBox "EL SISTEMA HA EXPIRADO", vbExclamation

With wb
.Saved = True
.ChangeFileAccess xlReadOnly
Kill .FullName
.Close
End With
End If
End Sub

La primera idea ( poner una contraseña para acceder al archivo, y en caso que sea errónea,,, que elimine el archivo,,) no será posible protegiendo el libro con clave de apertura. Ya que al ingresar la clave todavía no se ingresa al libro y por lo tanto mucho menos se ejecutará alguna macro que lo elimine. Además me preguntaba si nunca te equivocas al ingresar alguna clave ;) Imaginate eliminando tu propio libro jejeje.

Entonces lo que te sugiero es realizar estos pasos.

1- Tener todas las hojas ocultas, salvo una de Portada, con xlveryHidden para que no se puedan 'mostrar' desde el menú Formato, mostrar hojas.

2- La hoja de Portada (vacía o con algún logo/imagen) tendrá un botón o imagen que solicite clave de acceso. Puede ser con un mini formulario solicitando usuario y clave o un Inputbox para solo la clave. Pero guardate una copia del libro porque no serás el primero en eliminar su propio trabajo por errarle en la clave de ingreso ;) ;)

3- La macro para ese botón de acceso ya la tenés. Solo tendrás que agregar la opción de controlar también la clave. Y en caso de tener los permisos y fecha permitida, ejecutar un código para mostrar el resto de las hojas (ocultar la de Portada es opcional).

4- El código para ocultar todas las hojas se debe colocar tanto en el evento Save, Close y Open. Parece una redundancia. Pero un usuario podría estar trabajando, hacer un guardado y seguir en el libro. Esa copia ya no tendría las hojas ocultas. O bien podría abrir el libro sin ejecutar las macros y en ese caso tampoco se ejecutaría el código para ocultarlas. Por lo tanto es recomendable cubrir todas las situaciones posibles.

Sub ocultando()
Application.ScreenUpdating = False
'mostrar la de Portada   'ajustar nombre
Sheets("PORTADA").Visible = True
'ocultar el resto de las hojas
For Each sh In Sheets
    If sh.Name <> "PORTADA" Then sh.Visible = xlVeryHidden
Next sh
End Sub
Sub mostrando()
For Each sh In Sheets
    sh.Visible = True
Next sh
End Sub

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas