Programar un botón para quitar la contraseña del proyecto

Greg Truby

MrExcel MVP
Joined
Jun 19, 2002
Messages
10,030
UliCs me mandó el siguiente mensaje el otro día. Pide el permiso de él para compartir su mensaje públicamente porque creo que puede ser útil para otros lectores.
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p>
Que tal Greg. Buenas Noches.<o:p></o:p>
te envio este mensaje privado porque entiendo que la pregunta que te voy a hacer no es muy bien vista por algunos.<o:p></o:p>
No soy muy bueno en la programación de macros como tu pero aun así hago mi lucha tengo varios archivos con macros y a algunos de ellos le he puesto contraseña en el VBAProject. Tengo la inquietud de sabes si puedo asignar una macro a un botón para que proteja o desproteja mi VBAProject. ¿Puedes tu ayudarme? Por favor.<o:p></o:p>

Mi respuesta es así:<o:p></o:p>
No hay nada malo en esta pregunta en el sentido que UliCs no está preguntando cómo quebrar una contraseña. Él está preguntando algo muy diferente que es cómo aplicar una contraseña automáticamente. Puede ser que exista alguna manera más confiable desarrollando algo externo que sea compilado y agregado a Excel – algo en Visual Studio (Visual Basic o C por ejemplo). Pero si hablamos únicamente de los recursos normales de VBA – no hay una manera muy confiable. Sería necesario usar SendKeys que es una herramienta poco fiable. <o:p></o:p>

Una sugerencia que daría a todos quienes ponen contraseñas a proyecto VBA o al cuaderno en sí, es utilizar las propiedades del documento para poner una pista sobre la contraseña puesto. Algo como «segundo nombre de abuelo» o «color de mi primer perro»; poniéndola en comments o keywords. Y así cuando uno está en Windows Explorer, y pone el cursor sobre el nombre del archivo, su pista aparecerá en la ventanilla.
 

Excel Facts

Save Often
If you start asking yourself if now is a good time to save your Excel workbook, the answer is Yes
Gracias Greg por el apoyo.
no cabe duda que nunca se termina de aprender algo.
Saludos.
 
Upvote 0
...no cabe duda que nunca se termina de aprender algo...
otra manera que puedes lograrlo es con el siguiente código:
Code:
Sub desprotege()
    UnprotectVBProj ("stprotege")
    MsgBox "VBE desprotegido"
End Sub

la macro que hará el trabajo:
Code:
Sub UnprotectVBProj(ByVal Pwd As String)
'http://www.tek-tips.com/viewthread.cfm?qid=1589742&page=8
Dim vbProj As Object
Set vbProj = ThisWorkbook.VBProject
If vbProj.Protection <> 1 Then Exit Sub ' already unprotected
Set Application.VBE.ActiveVBProject = vbProj
SendKeys Pwd & "~~"
Application.VBE.CommandBars(1).FindControl(ID:=2578, recursive:=True).Execute
End Sub
de esta manera solo tines que asignar aun "Botón" la macro "desprotege" o mediante alguna combinacion de teclas para ejecutar y con ello te puedes olvidar de la contraseña ya que solo sera necesario ejecutar la macro para que te deproteja el VBEditor.

recalcar que este es un metodo 'eminentemente' preventivo ya que como se observa no requiere 'quebrar' absolutamente nada,por lo que no infringe/viola ninguna disposicion legal o moral.

nota.-probado exitosamente en excel 2003 :)
 
Upvote 0
ST, en lo que escribí en enero, mencioné el hecho de que sí es posible hacer eso con SendKeys. :warning: La cosa es que nunca recomiendo el uso de SendKeys por ser un método de poca confianza. :warning: Aquí, si falla no habrá daño. Pero hay otros casos donde la gente sí ha usado SendKeys en situaciones donde cuando falla habrá consecuencias muy serias. Fue por eso que no di un ejemplo a UliCs, no por no saber cómo hacerlo. Sin embargo no voy a suprimir su post en caso de que alguien decide probarlo.

:warning: Pero bajo ninguna circumstancia usaría yo SendKeys para poner una contraseña. :warning: Porque si por algún milagro falla dos veces identicamente sería un problema muy grande tratar de adivinar cómo falló para descubrir la contraseña que puso mal.
 
Last edited:
Upvote 0
ok Greg:

tomo nota de tus comentarios y gracias por la gentileza dal dejar mi participación
por demas decirte que en las veces que me atreví a usar sendkeys noté lo que ya comentas y si me atreví a sugerir fue por que tras diversas pruebas note que 'podia' tener cierto rango de 'confianza',lo cual no significa que no se deba tener precaucion para 'adaptar' la macro a los diferentes idiomas ya que las teclas pueden variar
 
Upvote 0
...gracias por la gentileza dal dejar mi participación...

Con mucho gusto. :biggrin: Hablando en serio, favor sepa que ayuda siempre está bienvenido aquí. Solo hay que tomar en cuenta que las sugerencias que uno da serán leidos por mucha gente de todos niveles de capacitación y por muchos años. En las manos de alguien con suficiente experiencia, SendKeys sí puede resultar útil siempre y cuando el programador se da cuenta de las limitaciones del método. En las manos de un novato es una amenaza.
 
Upvote 0

Forum statistics

Threads
1,223,943
Messages
6,175,551
Members
452,652
Latest member
eduedu

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top