Macro cn problemas

28/09/2004 - 18:09 por Daniel | Informe spam
Encontra para mi suerte la sgte. macro en el foro pero hay algunos
inconvenientes, si alguien me puede ayudar se lo agradecere

Private Sub Workbook_BeforePrint(Cancel As Boolean)
mypassword = "soloyo"
yourpassword = "test"
words = "Por favor, introduce tu password. Solo tienes una oportunidad."
topwords = "Trial Version - password requerido para imprimir"
tester = InputBox(words, topwords)
If tester = mypassword Or tester = yourpassword Then
MsgBox ("Lo siento. Fallaste, no puedo permitirte la impresión.")
Cancel = True
Exit Sub
else
End If
MsgBox ("Password correcto. La impresión esta en curso")
End Sub


Sin poner la clave, le doy Cancelar o enter imprime el documento.
Si le pongo cualquier clave tambíen imprime el documento.
Si le pongo la clave "soloyo" o "test" ahi no imprime el documento.
Cuando le pongo una clave aparece en la ventana de dialogo la palabra que
escribo,
se puede o existe una forma q solo aparezca asterisco como cuando se
ponen claves para q la otra persona no pueda verlo.
Podrian por favor ayudarme, no soy experto en excel pero esta macro
seria perfecta para mis trabajos en los libros ya q hay reportes
finales q conviene q solo una persona los imprima.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
28/09/2004 - 23:32 | Informe spam
hola, Daniel !

Encontre ... la sgte. macro en el foro pero hay algunos inconvenientes [...]
Sin poner la clave, le doy Cancelar o enter imprime el documento.
Si le pongo cualquier clave tambien imprime el documento.
Si le pongo la clave "soloyo" o "test" ahi no imprime el documento.



=> [hasta este punto]... solo tienes ->invertida<- la condicion...
[realmente] 'le estas diciendo' que... si responde 'acertadamente'... =>cancele<= :((
[creo que] te resultara 'mas claro' en el ejemplo que pongo al final :))

Cuando le pongo una clave aparece en la ventana de dialogo la palabra que escribo
... q solo aparezca asterisco como cuando se ponen claves para q la otra persona no pueda verlo.



=> para este punto... se requiere 'diseñar' un formulario [userform] con un control 'textbox'
[en las propiedades del control, aplicas la de 'passwordchar' con 'cualquier' caracter]

solo un comentario adicional...
el evento '_beforeprint' TAMBIEN es 'disparado' cuando el usuario decide usar la 'vista preliminar de impresion'
[por lo cual] si 'desde ahi' TAMBIEN 'decide' iniciar el proceso de impresion... nuevamente 'sera inquirido' :((

saludos,
hector.
en el modulo de codigo del libro [ThisWorkbook ?] ==Private Sub Workbook_BeforePrint(Cancel As Boolean)
Select Case InputBox( _
"Indica por favor tu clave de acceso.", _
"Privilegios del impresor...")
Case "soloyo", "test"
MsgBox "Clave aceptada. Iniciando proceso..."
Case Else
MsgBox "Por favor, llama al operador correspondiente.", , _
"Clave rechazada..."
Cancel = True
End Select
End Sub
Respuesta Responder a este mensaje
#2 Daniel
30/09/2004 - 03:31 | Informe spam
Mil gracias Hecto funciono OK y por la vista preliminar no importa ya q las
hojas estan configuradas y lista para imprimir

Saludos
Daniel Padilla Cañamero
Respuesta Responder a este mensaje
#3 Héctor Miguel
30/09/2004 - 05:04 | Informe spam
hola, Daniel !

... funciono OK ... la vista preliminar no importa ... estan configuradas y listas para imprimir



[creo que] no estaba 'por de mas' indicarte el comportamiento del evento ;)
gracias por el 'feed-back'

saludos,
hector.
Respuesta Responder a este mensaje
#4 Daniel
30/09/2004 - 21:35 | Informe spam
Hector una consulta mas como hago para q solo trabaje en determinadas hojas q
yo escoja gracias por tu tiempo

Daniel
Respuesta Responder a este mensaje
#5 Héctor Miguel
01/10/2004 - 06:35 | Informe spam
hola, Daniel !

... como hago para q solo trabaje en determinadas hojas [...]



1° declaras [y 'llenas'] una matriz con los nombres de las hojas que 'requieren permiso'
2° haces un 'barrido' por las hojas seleccionadas para imprimir [comparando nombres]
3° si alguna 'es' de las que estan en la matriz... ->solicitas la clave<-

=> toma nota que en el ejemplo se compara el nombre ->en la pestaña<- de cada hoja
si el usuario le cambia de nombre... se estara 'brincando' la 'proteccion' :-((
-> a menos que protejas EL LIBRO [NO la hoja] <- ;)
=> si se le ha de 'permitir' al usuario cambiar el nombre de las hojas...
la alternativa es comparar los 'codename' de las hojas
... cambiarias la instruccion que dice: ->If Hoja.Name = HojasClave(Sig) Then<-
... para que 'diga': ->If Hoja.CodeName = HojasClave(Sig) Then<-
... y [obviamente] la matriz 'HojasClave' se habra de llenar con los 'codenames' :))

saludos,
hector.
en el modulo de codigo del libro [ThisWorkbook ?] ==Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim HojasClave, Hoja As Object, Preguntar As Boolean, Sig As Byte
HojasClave = Array("Hoja1", "Hoja3")
For Each Hoja In ActiveWindow.SelectedSheets
For Sig = LBound(HojasClave) To UBound(HojasClave)
If Hoja.Name = HojasClave(Sig) Then
Preguntar = True
Exit For
End If
Next
Next
If Not Preguntar Then Exit Sub
Select Case InputBox( _
"Indica por favor tu clave de acceso.", _
"Privilegios del impresor...")
Case "soloyo", "test"
MsgBox "Clave aceptada. Iniciando proceso..."
Case Else
MsgBox "Por favor, llama al operador correspondiente.", , _
"Clave rechazada..."
Cancel = True
End Select
End Sub
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida