protejer/desprotejer 'nuestro propio' proyecto

25/03/2007 - 15:48 por Ivan | Informe spam
hola a todos,



¿sabeis si hay alguna forma via codigo de proteger/desproteger nuestro
propio pryecto, por supuesto teniendo la clave, y/o desde dentro de el
propio proyecto?
no he conseguido encontrar ningun metodo al respecto (algo parecido al
protect/unprotect de workbook) y he pensado que quizas con sendkeys, pero no
lo tengo muy claro.

y, en su defecto, ¿como podria importar componentes vb desde un proyecto
protegido, si es que es posible (de momento no lo he conseguido)?

como siempre, gracias de antemano

un saludo y hasta pronto
Ivan

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
25/03/2007 - 20:04 | Informe spam
hola, Ivan !

sabeis si hay alguna forma via codigo de proteger/desproteger nuestro propio pryecto
por supuesto teniendo la clave, y/o desde dentro de el propio proyecto?
no he conseguido encontrar ningun metodo al respecto (algo parecido al protect/unprotect de workbook)
y he pensado que quizas con sendkeys, pero no lo tengo muy claro.
y, en su defecto, como podria importar componentes vb desde un proyecto protegido
si es que es posible (de momento no lo he conseguido)?



para copiar componentes vb desde un libro protegido [primero] deberas quitarle la proteccion :D

para quitar/poner protecciones al proyecto de macros [hasta donde se]...
1) requiere enviar una secuencia de teclas sendkeys al proyecto de macros...
[por omision] se esta afectando ->al libro activo<- [en la interfase de usuario]
2) [por lo anterior] nos 'tendremos que' asegurar de...
a) abrir el editor vba...
b) cerrar TODA 'instancia' de modulo abierto...
c) cerrar el editor de vba...
d) activar el libro 'apropiado'...
e) enviar la secuencia de teclas, para quitar/poner la [clave de] proteccion del proyecto
3) NO olvidar que, una vez desprotegido un proyecto vba... ->seguira SIN password<- [en la sesion]
aun [re]protegiendolo, sera indispensable cerrarlo y abrirlo de nuevo para que 'se active' la [re]proteccion

ejemplos del procedimiento anterior... [en un modulo de codigo estandar/general/normal/...]:

Sub Quitar_PassWord_VBA()
Application.SendKeys "%{f11}{l 4}%q", True
Workbooks("Libro X").Activate
Application.SendKeys "%{f11}^r{down}AquiTuPassWoRd~%q", True
End Sub
Sub Poner_PassWord_VBA()
Workbooks("Libro X").Activate
Application.SendKeys "%{f11}^r%hp^{pgdn}{+}{tab}AquiTuPassWoRd{tab}AquiTuPassWoRd~%q"
Workbooks("Libro X").Close True
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Ivan
25/03/2007 - 20:20 | Informe spam
hola Hector Miguel, muchas gracias de nuevo

la verdad es que acabo de encontrar tu (misma +o-) respuesta a otros
usuarios con el buscador del foro (creo que voy a tener que echarle un
poco mas de paciencia a las busquedas antes de consultar)

en cuanto a la segunda parte de la consulta ->

¿como podria importar componentes vb desde un proyecto




protegido,<<

si tienes tiempo, me podrias comentar si es posible modificar/añadir/
eliminar codigo/componentes de un proyecto protegido con codigo
contenido en el propio proyecto sin tener que desprotegerlo. Me da la
impresion de que no (al menos via sencilla) pero lo mismo hay algun
truco

bueno, de nuevo muchas gracias

un saludo y hasta pronto
Ivan
Respuesta Responder a este mensaje
#3 Héctor Miguel
25/03/2007 - 21:40 | Informe spam
hola, Ivan !

en cuanto a la segunda parte de la consulta ->
>>como podria importar componentes vb desde un proyecto protegido,<<
... comentar si es posible modificar/a#adir/ eliminar codigo/componentes
de un proyecto protegido con codigo contenido en el propio proyecto sin tener que desprotegerlo.
Me da la impresion de que no (al menos via sencilla) pero lo mismo hay algun truco



me temo que no hay 'truco posible' [sobre todo en versiones 'recientes'] :-((

Is Access to the VB Project Allowed?
http://j-walk.com/ss/excel/tips/tip96.htm

Programming To The Visual Basic Editor
http://www.cpearson.com/excel/vbe.htm

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#4 Ivan
26/03/2007 - 02:42 | Informe spam
hola de nuevo Hector Miguel, y de nuevo muchas gracias

por lo que se ve, parece que no hay mas remedio que des/reproteger el
proyecto, o olvidarse de esta vía. El problema es sobre todo a la hora de
posibles actualizaciones del archivo con cambios 'operativo'. Supongo que el
proveer de un certificado reconocido por el equipo receptor no influye en
este punto (tampoco sabría como hacerlo)

visto lo visto, he estado probando los códigos con sendkeys, y parecen
funcionar bien, pero me han surgido varias 'sor...presas'. Si tienes tiempo
te comento/consulto varias de las 'cosillas' que de momento me han ocurrido:

1º.- por un lado, al ejecutar Sub Quitar_PassWord_VBA(), la macro parece
ejecutarse bien al ejecutarla desde la interfaz de excel (que al fin y al
cabo es su cometido) y desprotege el proyecto,

lo curioso (para mi ) viene al probar las macros desde el editor de vba
(parece claro que alt+f11 en este caso invierte el destino) veo que escribe
4 palotes (creo que) en el punto donde esta activo el cursor en el momento
de ejecutarse, a veces en una celda, a veces dentro de un modulo, incluso a
veces escribe también la contraseña en otra celda.

a primera vista y tras algunas pruebas despiezando el código, supongo que la
causante es esta parte -> {1 4}, que imagino, por tu orden expuesto que es
la encargada de -> b) cerrar TODA 'instancia' de modulo abierto...

aunque no creo que suponga ningún problema, pues como te comento, lo suyo es
que estas modificaciones se produzcan por alguna acción desde al interface
de excel o un formulario, pero, ¿podrías explicarme como funciona/que hace
exactamente dicha combinación de teclas?

2º.- en cuanto a -> Sub Poner_PassWord_VBA(), también funciona bien,

de hecho le he añadido una instrucción al final para volver a abrir el libro
ya protegido de nuevo y lo así lo hace,

aunque, y aquí aparece la curiosidad de nuevo al ejecutar desde el editor de
vb, en este caso me presenta un cuadro de dialogo preguntándome si quiero
proteger 'algo' (en una ocasión la hoja y/o rangos, el resto el libro)

aquí también es valido lo de la interface de excel, pero, como curiosidad,
¿podrías explicarme la causa, que supongo esta relacionada con el destino de
la combinación de teclas?

3º.- y por ultimo ¿como puede afectar el posible uso del teclado mientras se
esta ejecutando sendkeys?¿se podría usar algo parecido a la propiedad
interactive (supongo que esta también inhabilita sendkeys < se me acaba de
ocurrir y no lo he probado>) para evitar la posible interferencia del
usuario o...?

bueno, disculpa el rollo y si puedes echarme una mano una vez mas, te lo
agradezco (y si no también)

un saludo y hasta pronto
Ivan
Respuesta Responder a este mensaje
#5 Héctor Miguel
26/03/2007 - 02:58 | Informe spam
hola, Ivan !

... probando... sendkeys... me han surgido varias 'sor...presas'...
1... al ejecutar Sub Quitar_PassWord_VBA(), la macro parece ejecutarse bien... desde la interfaz de excel
(que al fin y al cabo es su cometido) y desprotege el proyecto,
lo curioso (para mi ) viene al probar las macros desde el editor de vba [...]



1) ya lo dijiste... -> "... ejecutarse... desde la interfaz de excel (que al fin y al cabo es su cometido)..." :))

como puede afectar el posible uso del teclado mientras se esta ejecutando sendkeys?
se podría usar algo parecido a la propiedad > interactive (supongo que esta también inhabilita sendkeys <
se me acaba de ocurrir y no lo he probado>) para evitar la posible interferencia del usuario o...?



2) me espero a que 'corras pruebas' :))

3) hablando de 'que' hacen [+/- exactemente] los 'teclazos' del mismo metodo 'sendkeys'...
1) nos aseguramos que ->NINGUNA<- ventana de codigo este 'abierta' <= OJO
usamos un [primer] 'sendkeys' para...
a) abrir el editor de vba con => {Alt}+{F11} = %{f11}
b) cerrar [por si las dudas] toda instancia de modulo abierto con => 4 'flechas izquierda' = {L 4}
c) cerramos el editor de vba [para poder 'activar' en excel el libro que nos interesa] con => {Alt}+Q = %q
=> el primer 'sendkeys' nos queda +/- asi: Application.SendKeys "%{f11}{l 4}%q", True
2) [habiendo 'regresado' a excel] ->activamos<- el libro cuyo proyecto vba se va a desproteger
Workbooks("Libro fulano").Activate
3) 'mandamos' la segunda sentencia 'sendkeys' para...
a) abrir el editor de vba con => {Alt}+{F11} = %{f11}
b) 'activar' el explorador de proyectos con => {Ctrl}+R = ^r
c) 'pulsamos' => una flecha para abajo = {down}
[al 'tratar' de expandir un proyecto bloqueado 'lanza' automaticamente la solicitud por el password] :))
d) 'enviamos' el password 'seguido' de la tecla {enter} con => x_password~
d) [opcionalmente] 'cerramos' el editor de vba con => {Alt}+Q = %q
=> el segundo 'sendkeys' nos queda +/- asi: Application.SendKeys "%{f11}^r{down}x_password~%q"

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida