Proteger para evitar Imprimir y guardar o guardar como

23/09/2008 - 19:06 por Age | Informe spam
Buenas tardes:

Qusiera que me ayudaran en lo siguiente:

* Un codigo en un libro donde evite las impresiones y que ademas pida una
clabe para poderlas realizar.

* Un codigo en un libro donde evite que se guarde dicho libro en otro disco
duro, usb, cd, DVD, etc. y que pida clave si se requiere grabar en otro lugar
que no se donde esta.

* Un codigo donde toda la hoja o libro ponga las letras ocultas (no en
blanco ocultas) si en la celda a1 no tengo nada escrito y si pongo "foco" en
esa celda las vuelba visibles todo el libro (en configriracion de celda es la
opcion es ";;;", lo quiero mediante la celda a1 tenga escrito "Foco" y de
forma automatica) .

Gracias.

Preguntas similare

Leer las respuestas

#11 Héctor Miguel
26/09/2008 - 04:05 | Informe spam
hola, Carlos !

solo ... como puedo encriptar los password que me piden estos codigo:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Cancel = InputBox("Entra tu clave") <> "focus pocus"
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI Then Cancel = InputBox("Entra tu clave") <> "focus pocus"
End Sub



1) crea un formulario de usuario (en el ejemplo UserForm1) con solo un cuadro de texto (en el ejemplo TextBox1)
al cuadro de texto, asignale en la propiedad "PasswordChar" el caracter que quieras mostrar (p.e. un asterisco *)

2) en un modulo de codigo estandar, establece/define dos variables publicas (cambia la de la "clave"):

Public Const Clave As String = "Abracadabra"
Public Respuesta As String

3) en el modulo de codigo del formulario, copia/pega (o escribe) los siguientes procedimientos:
(OJO: escriba (o no) la clave el usuario, el userform se quita pulsando {enter}, {esc}, {Alt}+{F4}, la {X}, etc.)

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_Terminate()
Respuesta = TextBox1
End Sub

4) cambia la propuesta de los codigos en los eventos del libro ('_beforeprint' y '_beforesave') a los siguientes:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
UserForm1.Show: Cancel = Respuesta <> Clave
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI Then: UserForm1.Show: Cancel = Respuesta <> Clave
End Sub

saludos,
hector.
Respuesta Responder a este mensaje
#12 Age
26/09/2008 - 16:10 | Informe spam
Ya no entendi!!

esto estoy haciendo:

Insertar + UserForm (se habre una ventana (creo que debe ser el cuadro de
texto))

donde aparece una ventana gris ahi doy click en ver codigo y parace otra
ventana donce esta escrito:

Private Sub UserForm_Click()

End Sub

Ahi escrito solo Passwordchar

quedando de la siguiente forma:

Private Sub UserForm_Click()
objeto.PasswordChar [= *]

End Sub

DE ahi ya no estoy muy seguro me dieces el modulo estandat establesca o
defina dos variables ¿como lo hago?

despues me dices que en el modulo de codigo del formulario, aqui entiendo
que hablo un modulo y en el formulario trasncriba los iguiente

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_Terminate()
Respuesta = TextBox1
End Sub

y en el Worknook cambie los codigo de:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Cancel = InputBox("entra tu clave") <> "Focus pocus"
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI Then Cancel = InputBox("Entra tu clave") <> "focus pocus"
End Sub

a


Private Sub Workbook_BeforePrint(Cancel As Boolean)
UserForm1.Show: Cancel = Respuesta <> Clave
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI Then: UserForm1.Show: Cancel = Respuesta <> Clave
End Sub

Me trabo en algunos puntos como vez me podiras explicar con manzanitas por
que hoy estoy medio lento.


Gracias
Respuesta Responder a este mensaje
#13 Héctor Miguel
27/09/2008 - 01:27 | Informe spam
hola, Carlos !

Ya no entendi!! esto estoy haciendo:
Insertar + UserForm (se habre una ventana (creo que debe ser el cuadro de texto))



=> NOP !!!... un UserForm es un "contenedor" donde puedes colocar controles de varios tipos

donde aparece una ventana gris ahi doy click en ver codigo y parace otra ventana donce esta escrito:
Private Sub UserForm_Click()

End Sub
Ahi escrito solo Passwordchar quedando de la siguiente forma:
Private Sub UserForm_Click()
objeto.PasswordChar [= *]
End Sub



=> tampoco !!!... aunque un UserForm tambien puede administrar sus propios eventos, la idea es que:
"dentro" del UserForm (el "contenedor") incrustes un objeto/control del tipo "cuadro de texto"
(buscalo en la barra de controles del editor de vba, que se debe mostrar cuando tienes activo un formulario)

DE ahi ya no estoy muy seguro me dieces el modulo estandat establesca o defina dos variables como lo hago?



=> asi como hiciste el "Insertar + UserForm", puedes tambien crear un modulo de codigo estandar => insertar + modulo
y en su ventanita es donde copias/pegas (o escribes) las variables de la propuesta anterior

despues me dices que en el modulo de codigo del formulario
aqui entiendo que hablo un modulo y en el formulario trasncriba los iguiente
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_Terminate()
Respuesta = TextBox1
End Sub



=> una vez que hayas insertado el control "cuadro de texto" (TextBox1) DENTRO del UserForm...
los codigos de evento para dicho control (TextoBox1) ya podran ser ejecutados cuando se mueste el formulario

y en el Worknook cambie los codigo
a
Private Sub Workbook_BeforePrint(Cancel As Boolean)
UserForm1.Show: Cancel = Respuesta <> Clave
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI Then: UserForm1.Show: Cancel = Respuesta <> Clave
End Sub



con lo anterior, esto ya debera de funcionar (+/- como se espera)
si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#14 Age
30/09/2008 - 03:01 | Informe spam
Hector:

Como siempre, muy atinado y sobre todo te felcito la paciencia que nos (me)
tienes queo perfecto lo que hicimos juntos en mi hoja de calculo.

Solo una duda, si kiero ponerle dos password diferentes ya no me lo permite,
solo permite uno solo para evitar imprimir y guardar.

Gracias de nuevo!

Y si alguien desea el libro que desarrollamos entre Hector y yo, con gusto
se los envio!!
Respuesta Responder a este mensaje
#15 Héctor Miguel
30/09/2008 - 03:25 | Informe spam
hola, Carlos !

Solo una duda, si kiero ponerle dos password diferentes ya no me lo permite
solo permite uno solo para evitar imprimir y guardar...



solo sugeri una variable (Clave) asumiendo que seria la misma para ambos procesos (guardar/imprimir)
2) en un modulo de codigo estandar, establece/define dos variables publicas (cambia la de la "clave"):

Public Const Clave As String = "Abracadabra"
Public Respuesta As String



tu puedes definir las necesarias para n_procesos (segun lo que necesites +/- "controlar") p.e.

Public Const passGuardar As String = "Abracadabra"
Public Const passImprimir As String = "Hocus Pocus"
Public Respuesta As String

y luego "comparas" cada clave segun su proceso (p.e.) en los eventos del libro ('_beforeprint' y '_beforesave'):

Private Sub Workbook_BeforePrint(Cancel As Boolean)
UserForm1.Show: Cancel = Respuesta <> passImprimir
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI Then: UserForm1.Show: Cancel = Respuesta <> passGuardar
End Sub

saludos,
hector.

p.d. tampoco tienen por que ser "costantes"... puedes establecer la comparacion directa en cada evento (p.e.)

Private Sub Workbook_BeforePrint(Cancel As Boolean)
UserForm1.Show: Cancel = Respuesta <> "claVe uNO"
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI Then: UserForm1.Show: Cancel = Respuesta <> "CLAvE Dos"
End Sub

solo manten la comparacion que distinga entre (may/min)usculas ;)
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida