Inicio > Microsoft Excel > fejoal > como crear una macro de inicio

como crear una macro de inicio

Experto:
Usuario:
Fecha: 20/11/2003
Valoración: (5,00 sobre 5) Categoría: Microsoft Excel
20/06/2003
lchavez63, usuario preguntando en Microsoft Excel
Usuario
hola discula 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 formulrio en pantalla y me pida la clave de acceso a ese libro, si la clave esta incorrecta tendra que mandar un mensaje de error y tendre 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
20/06/2003
lchavez63, experto respondiendo en Microsoft Excel
Experto
Hola, Chavez

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 algnas 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.

Espero que esto ayude a resolver tu problema.
Si así fuera, agradeceré un comentario y que la finalices.
(Recuerda que mantener cierto número de respuestas pendientes impide que otros usuarios puedan consultarme)

Un abrazo!
Fernando

"Me lo explicaron y lo olvidé,
lo leí y lo entendí,
lo hice y lo aprendí".

°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
A cambio de mi tiempo, sólo te pido dos cosas:
- Finaliza (con puntaje y comentario) esta pregunta
- 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. Por ambas cosas, muchas gracias.

°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
04/07/2003
lchavez63, experto respondiendo en Microsoft Excel
Experto
Hola, Chavez

Me preguntaba si esta respuesta te aportó alguna solución a tu problema.

Habiendo notado que me encuentro inhabilitado para recibir preguntas, dado que tengo muchas sin finalizar, te pido -por favor- finalices esta pregunta.

Desde ya, muchas gracias!
Fernando
20/11/2003
lchavez63, usuario preguntando en Microsoft Excel
Usuario
Excelente. Una fantástica solución.
Enlaces patrocinados