como diseño un formulario que me deje ejecutar una macro

27/10/2005 - 21:11 por Isaac García | Informe spam
necesito generar un formulario que al llamarlo me solicite una clave de
acceso, y que si es verdadero la ejecute y si no, solo mande un mensaje.
Saludos Ygracias


ISaac

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
28/10/2005 - 06:59 | Informe spam
hola, Isaac !

Mostrar la cita
la forma mas 'delgada' [menos lineas de codigo] que se me ocurre, es:
utilizando SOLO un control de cuadro de texto en el formulario y que el usuario presione 'enter' al terminar.

te paso los pasos y, si cualquier duda... comentas?
saludos,
hector.
== estando activo 'el libro en cuestion' ... =1.- ingresa al editor de vba -> atajo de teclado = alt+f11
2.- [menu] insertar / userform
3.- agrega un control 'cuadro de texto'
4.- click-derecho sobre el control y selecciona -> 'propiedades'
doble-click sobre la propiedad 'passwordchar' e introduce [p.e.] un asterisco '*'
5.- click-derecho sobre el control y selecciona -> 'ver codigo...'
6.- elimina TODA linea de codigo que aparezca en el modulo de codigo y...
-> copia/pega las siguientes lineas en dicho modulo... <-
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then Unload Me
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If TextBox1 = "PoN aqUi tU cLavE" Then Macro_a_ejecutar Else MsgBox "Clave equivocada !!!"
End Sub

solo toma en cuenta que la comparacion de textos en vba -generalmente- debe ser 'exacta' [mayusculas/minusculas]
#2 Marta
13/12/2005 - 11:19 | Informe spam
Hola a todos,

Héctor Miguel, me ha resultado interesante tu respuesta.

Siguiendo ese razonamiento, cómo se haría lo siguiente?:

- El cuadro de texto te pide una contraseña, y según qué contraseña
introduzcas, ejecuta una macro u otra.
Es decir, si como contraseña pongo A, me ejecuta la macro A, si pongo B, la
macro B, etc... así hasta 6 posibles contraseñas con 6 distintas macros.
¿Se puede?

Muchas gracias

"Héctor Miguel" escribió:

Mostrar la cita
#3 Héctor Miguel
13/12/2005 - 20:38 | Informe spam
hola, Marta !

Mostrar la cita
una alternativa...
en el modulo de codigo del formulario ==Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then Unload Me
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Select Case LCase(TextBox1)
Case "macro1", "macro2", "macro3", "macro4", "macro5", "macro6"
Application.Run TextBox1
Case Else: MsgBox "Clave NO reconocida !!!"
End Select
End Sub

las expresiones de texto del -> Case "macro1", "macro2", "macro3", "macro4", "macro5", "macro6"
deben coincidir con los nombres de 'las macros'
-> [solo] recuerda que no se 'permiten' espacios en los nombres de macros ;)
y algunos 'ciertos nombres'... podrian ocasionar 'conflictos' :-(

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
#4 Marta
14/12/2005 - 11:36 | Informe spam
Hola Héctor!

Muchas gracias, pinta bien.

Solo una preguntilla absurda... hago exactamente lo que comentas, pero...
¿en qué lugar especifico cuál es la contraseña que corresponde a cada macro?

Lo que he puesto en el código del textbox es:

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal
Shift As Integer)
If KeyCode = vbKeyReturn Then Unload Me
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Select Case LCase(TextBox1)
Case "Spend_Albert", "Spend_Celia", "Spend_Elisa", "Spend_Javier",
"Spend_Noelia", "Spend_Sergio"
Application.Run TextBox1
Case Else: MsgBox "Clave NO reconocida !!!"
End Select
End Sub

En Case, lo que ves es el nombre de cada una de las macros.

Guardo y abro después el Excel y al saltar la caja, meta lo que meta me sale
"Clave NO reconocida !!!".
¿Dónde tengo que poner cuáles son las contraseñas que permiten la ejecución
de las macros?.
En Propiedades de TextBox1, en PasswordChar he marcado *.

Muchas gracias por todo,

Marta

"Héctor Miguel" escribió:

Mostrar la cita
#5 Héctor Miguel
14/12/2005 - 17:47 | Informe spam
hola, Marta !

Mostrar la cita
1) para el caso del ejemplo, la contrase#a 'equivale' al nombre de la macro [tal como lo describes] ;)
2) solo comentarte que en vba, las comparaciones de texto son... 'textuales' [mayusculas/minusculas]
[a menos que al inicio del modulo pongas 'Option Compare Text', o lo 'manejes' a nivel de procedimiento]
3) yo habia pensado en 'proteger/prevenir/corregir/...' si el usuario introduce la clave a veces en may/min/combinada :))
y la comparacion en el codigo la estoy 'forzando' a comparar solo en minusculas con la instruccion:
-> Select Case LCase(TextBox1)... y en 'el Case' los textos/macros -> en minusculas

-> si deseas que la comparacion sea 'exacta' a los 'Case "Spend_Albert", "Spend_Celia", "Spend_Elisa", [etc.]
solo elimina de la linea 'Select' la funcion 'LCase'...
de -> Select Case LCase(TextBox1)
a -> Select Case TextBox1

saludos,
hector.
==> Lo que he puesto en el codigo del textbox es:
Mostrar la cita
Ads by Google
Search Busqueda sugerida