Disculpa que te moleste, lo que pasa es que apenas estoy aprendiendo a manejar excel y en la escuela me dejaron un trabajo y consiste en lo siguiente: Tengo que crear una macro en la cual antes de entrar al libro ponga o muestre un formulario en pantalla y me pida la clave de acceso a ese libro, si la clave esta incorrecta tendrá que mandar un mensaje de error y tendré que teclear de nueva cuenta la clave de acceso y si me equivoco 3 veces se tiene que cerrar ese libro.
Espero que me puedas ayudar y de antemano muchas gracias por tu respuesta
1 respuesta
Respuesta de fejoal
2
2
fejoal, Por falta de tiempo para responder como me gusta hacerlo suspendo...
Me sorprende que tengas que desarrollar un procedimiento como el que solicitas, ya que supone un conocimiento de Visual Basic for Applications bastante avanzado. Por lo menos no parece para alguien que apenas está aprendiendo a manejar Excel, como tu dices. Pero, bueno, intentaré ayudarte. Para hacerlo simple, evitaremos el uso de Formularios (Userforms) porque supone un manejo de controles ActiveX que no sé si tienes. Un Cuadro de diálogo (Inputbox) cumple el mismo cometido y no necesita diseño alguno (de todos modos, si al aplicar este procedimiento, realmente necesitas un Formulario, podremos mejorarlo de a poco) Entonces, Chavez, para empezar, activa el editor de Visual Basic (presiona Alt+F11) y busca la hoja que dice "ThisWorkbook" (o "EsteLibro" según la versión") Copia el código siguiente y pégalo en el panel desplegado a la derecha de su Editor de Visual Basic: Private Sub Workbook_Open() DefUsuario End Sub --- Hasta aquí sólo le indicaste que al abrir el libro se ejecute la macro "DefUsuario" que será la encargada de hacer el control de la clave. Esta macro estará en un módulo nuevo que debes insertar. ("Insertar", "Módulo"): Sub DefUsuario() 'Ingreso de clave para selección de modalidad Dim C_Chances, C_Error, Adminis, Autoriz, Lector 'Definir aquí las claves para cada usuario: Autoriz = "Clave" C_Chances = 3 'cantidad de veces que puede reintentar ingreso de clave '------------------------------------------ Application.EnableEvents = True Application.EnableCancelKey = xlDisabled 10: ClaveX = InputBox("Por favor, ingrese su clave:", "Identificación de Usuario") If ClaveX <> "" Then Application.ScreenUpdating = False MuestraTo Select Case ClaveX Case Autoriz 'Permite acceder al archivo. 'Muestra un mensaje de bienvenida pero puedes borrarlo 'y reemplazarlo por las acciones que quieres que haga al entrar, o por nada: Sheets("Hoja1").Select MsgBox "Bienvenido", vbExclamation, "Contraseña verificada" Case Else 'Contraseña incorrecta Application.EnableCancelKey = xlDisabled C_Error = C_Error + 1 If C_Error < C_Chances Then Application.ScreenUpdating = True MsgBox "Contraseña incorrecta" & Chr(10) & "Ingrese nuevamente" & Chr(10) & "Le quedan " & C_Chances - C_Error & " chance" & IIf(C_Chances - C_Error = 1, "", "s"), vbInformation, "ERROR en CLAVE INGRESADA" GoTo 10: Else Application.DisplayAlerts = False Application.Quit End If End Select Else Application.EnableCancelKey = xlDisabled Application.ScreenUpdating = True MsgBox "No indicó clave" & Chr(10) & "Por lo tanto, cierro archivo" & Chr(10), vbInformation, "NECESITA CLAVE PARA OPERAR" ActiveWorkbook.Close False End If Application.ScreenUpdating = True End Sub Bien, En el código deberás colocar la clave que habilitará el archivo. Allí donde dice: Autoriz = "Clave" Como verás, la contraseña está explícita en el procedimiento de Visual Basic. Por tal razón, es conveniente que todo el proyecto de VBA estuviese también protegido para que el usuario no pueda leer el código y, eventualmente, descubrir cual es la clave. Para ello, accede al Editor de Visual Basic, en su Navegador de Proyectos, ¿busca el de tu archivo? Cierra todos los elementos que tenga asociado- haz click derecho sobre él. ¿Elige? ¿Propiedades del VBA Project?. Selecciona la solapa de Protección, ¿marca la casilla de? ¿Bloquear proyecto para visualización? Y también ingresa otra contraseña aquí. Notarás algunas notas dentro de la macro que te orientará en qué está pasando. De todos modos, me quedan algunas consideraciones adicionales: Este archivo funciona íntegramente sobre la base de macros de VBA. Por tanto, es necesario que el usuario habilite las mismas al abrir el archivo. Si el usuario no ingresa ninguna de estas la macro le avisará y tendrá tres oportunidades para escribir una correcta (también puedes modificarle en el código la cantidad de reintentos). Excedido el límite, la macro cerrará el archivo y Excel (en castigo). Si en la pantalla de ingreso de clave, no se proporciona ninguna, se cerrará el archivo inmediatamente. Desde luego, este es un esquema muy simple de protección que puede mejorarse. Pero considerando que recién empiezas no quise complicarlo más. - Ingresa al sitio www.porloschicos.com y, si quieres, presiona el botón de donación (es gratis). Confío en que lo harás.