Officefull.es

Excel, word, powerpoint, android

Contraseña UserForm Excel (PassWord-UserForm) Diciembre 28, 2008

(PassWord-UserForm)

¿Cuántas veces hemos necesitado que al abrir un archivo de Excel nos pidiera introducir alguna clave o contraseña sin que esta se vea?…

 

En este artículo te vamos a mostrar como puedes realizarlo:

Desarrollo Archivo de Excel

El archivo esta formado por lo siguiente →

1 Un formulario

Private Sub UserForm_Activate() Dim miFormulario AsLong, Estilo As Long Me.SpecialEffect = fmSpecialEffectSunken miFormulario = BuscarVentana("Thunder" & _ IIf(Val(Application.Version) < 9, "X", "D") & "Frame", Me.Caption) Estilo = ObtenerVentana(miFormulario, (-16)) Estilo = Estilo And Not &HC00000 EstablecerVentana miFormulario, (-16), Estilo MostrarVentana miFormulario, 5 End Sub   Private Sub TextBox1_KeyDown( _ ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = vbKeyReturn Or KeyCode = vbKeyEscape Then Unload Me End Sub   Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Cancel = CloseMode = vbFormControlMenu End Sub   Private Sub UserForm_Terminate(): Respuesta = TextBox1: End Sub

2 Dos Módulos Estándar

Módulo Basics →

Public Const Clave As String = "Abracadabra" Public Respuesta As String Sub Ask4Password()   Application.EnableCancelKey = xlErrorHandler   On Error GoTo Ver_Error   PassWord.Show   MsgBox "La respuesta ha sido:" & vbCr & _     IIf(Respuesta = Clave, "C", "Inc") & "orrecta !!!", , "" Ver_Error:   If Err = 18 Then Resume End Sub

Módulo CallCenter→

 Option Private Module Declare Function BuscarVentana Lib "user32" Alias "FindWindowA" ( _   ByVal Clase As String, ByVal Ventana As String) As Long Declare Function ObtenerVentana Lib "user32" Alias "GetWindowLongA" ( _   ByVal Ventana As Long, ByVal Indice As Long) As Long Declare Function EstablecerVentana Lib "user32" Alias "SetWindowLongA" ( _   ByVal Ventana As Long, ByVal Indice As Long, ByVal NuevoEstilo As Long) As Long Declare Function MostrarVentana Lib "user32" Alias "ShowWindow" ( _   ByVal Ventana As Long, ByVal Comando As Long) As Long

3 Evento Open del libro

Private Sub Workbook_Open() Ask4Password Me.IsAddin = False: Me.Saved = True End Sub

Cuando abrimos el archivo de ejemplo de Excel nos mostrará lo siguiente →

Un formulario donde debemos de introducir la contraseña, password o clave que le hemos asignado (Ver Clave en el Módulo Basics )

Si la contraseña es correcta:

Si la contraseña es incorrecta:

Como es un archivo de ejemplo de Excel, tanto que le demos la clave correcta como que la introduzcamos incorrecta, se nos mostrara la ventana del libro. Esto es debido a que el libro esta grabado con la propiedad IsAddin establecida en True (esto causa que su ventana no sea mostrada) luego de “pasar” por entrar la clave (correcta o no) esta propiedad se regresa a False (se muestra la ventana del libro), (obviamente) habría que agregar instrucciones para que siempre se guarde con esta propiedad en True (u otros trucos).

  • El formulario se muestra SIN titulo y su alto esta recortado en tiempo de diseño. (Ver código formulario que hace llamada a la API que se encuentra en el Módulo CallCenter )
  • No vamos a poder arrastrar el formulario por la pantalla…
  • Como tampoco vamos a poder cancelar su ejecución ni con {Alt}+{F4} ni con {Ctrl}+{Break}
  • … de momento …podemos escapar del formulario con {enter}o{esc}
  • Y el resto…. para que vosotros mismos lo podáis investigar

Descarga del archivo de Excel

PassWordUserForm (12,1 kB)

 

Categorías: Sin categoría

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *