Foros del Web » Soporte técnico » Ofimática »

[ Excel VBA ] Quitar contraseña en tiempo de ejecucion (conociendo la contraseña)

Estas en el tema de [ Excel VBA ] Quitar contraseña en tiempo de ejecucion (conociendo la contraseña) en el foro de Ofimática en Foros del Web. Hola Buenos Dias, espero alguien pueda ayudarme con este gran problema, de antemano agradesco la ayuda que puedan brindarme, busque por el foro temas de ...
  #1 (permalink)  
Antiguo 27/07/2010, 08:23
Avatar de hugo180486  
Fecha de Ingreso: septiembre-2007
Mensajes: 199
Antigüedad: 16 años, 7 meses
Puntos: 3
[ Excel VBA ] Quitar contraseña en tiempo de ejecucion (conociendo la contraseña)

Hola Buenos Dias, espero alguien pueda ayudarme con este gran problema, de antemano agradesco la ayuda que puedan brindarme, busque por el foro temas de quitar contraseña de un de proyectos de Excel con Macros, y viene bastante pero todos son del tipo me pasaron un Excel con clave y me urge quitarla...

Explico que ese no es mi caso ya que yo conozco la clave de mi proyecto de Excel, pero mi necesidad surge ah raiz de que mi archivo de Excel esta muy pesado pesa como 50MB (Quitando los UserForm pesa 25 MB), por ende es muy lento de manejar, la solucin que se nos ocurrio fue Exportar e Importar los UserForm a medida que los ocupemos y desocupemos, el problema es que si la hoja la tienes protegida con contraseña me marca que el Libro esta protegido y no me deja hacer, tengo que darle ALT + F11 pasar a donde te muestra el codigo y poner la contrase;a y volver ejecutar, como esto lo van a usar los usuarios, y pues la contrae;a es una proteccion contra elllos, quisiera saber si es posible quitarle la contrase;a y ponerla en tiempo de ejecucion...

Como cuento con un UserForm pricipal, la idea es que cuando se cargue el UserForm se desporteja y cuando se descargue se proteja para que no puedan ingresar al codigo...

Saludos espero que alguien tambien haya tenido el mismo inconveniente que yo y pueda prestarme ayuda...
  #2 (permalink)  
Antiguo 27/07/2010, 08:55
Avatar de abrahamvj  
Fecha de Ingreso: julio-2006
Ubicación: Lima, Peru
Mensajes: 708
Antigüedad: 17 años, 9 meses
Puntos: 18
Respuesta: [ Excel VBA ] Quitar contraseña en tiempo de ejecucion (conociendo la cont

Supongo que te refieres a la contraseña del proyecto VBA. Aqui un buen ejemplo de como hacerlo:

http://www.ayudaexcel.com/foro/f10/%...ht=desproteger

Abraham
  #3 (permalink)  
Antiguo 27/07/2010, 09:08
Avatar de hugo180486  
Fecha de Ingreso: septiembre-2007
Mensajes: 199
Antigüedad: 16 años, 7 meses
Puntos: 3
Respuesta: [ Excel VBA ] Quitar contraseña en tiempo de ejecucion (conociendo la cont

Asi es Abrham a eso me refiero, Gracias por ocntestar pero quede igual, por que el en el link que me pasaste el usuario adjunta un zip con el codigo necesario, y ese zip no lo pude descargar, me arroja lo siquiente :
ERROR
The requested URL could not be retrieved

Saludos...
  #4 (permalink)  
Antiguo 27/07/2010, 09:50
Avatar de abrahamvj  
Fecha de Ingreso: julio-2006
Ubicación: Lima, Peru
Mensajes: 708
Antigüedad: 17 años, 9 meses
Puntos: 18
Respuesta: [ Excel VBA ] Quitar contraseña en tiempo de ejecucion (conociendo la cont

Es el firewall del lugar en donde estas. 100% seguro, acabo de probabrlo y baja normal

Abraham
  #5 (permalink)  
Antiguo 27/07/2010, 10:31
Avatar de hugo180486  
Fecha de Ingreso: septiembre-2007
Mensajes: 199
Antigüedad: 16 años, 7 meses
Puntos: 3
Respuesta: [ Excel VBA ] Quitar contraseña en tiempo de ejecucion (conociendo la cont

Si seguro es eso... Intentare cuando llegeue a mi casa para no tener reestrcciones.. Gracias...

Encontre lo siguiente:

Código vb:
Ver original
  1. Sub Proteger_VBProject(ByRef wbExcel As Workbook, ByVal sPassword As String)
  2.  
  3. Dim vbProj As Object
  4.  
  5. Set vbProj = wbExcel.VBProject
  6.  
  7. 'can't do it if already locked!
  8. If vbProj.Protection = 1 Then Exit Sub
  9.  
  10. Set Application.VBE.ActiveVBProject = vbProj
  11.  
  12. ' now use lovely SendKeys to set the project password
  13. SendKeys "+{TAB}{RIGHT}%V{+}{TAB}" & sPassword & "{TAB}" & _
  14. sPassword & "~"
  15.  
  16. Application.VBE.CommandBars(1).FindControl(id:=2578, recursive:=True).Execute
  17.  
  18. Set vbProj = Nothing
  19.  
  20. End Sub
  21.  
  22. Sub Desproteger_VBProject(ByRef wbExcel As Workbook, ByVal sPassword As String)
  23.  
  24. Dim vbProj As Object
  25.  
  26. Set vbProj = wbExcel.VBProject
  27.  
  28. 'can't do it if already unlocked!
  29. If Not vbProj.Protection = 1 Then Exit Sub
  30.  
  31. Set Application.VBE.ActiveVBProject = vbProj
  32.  
  33. ' now use lovely SendKeys to quote the project password
  34. SendKeys sPassword & "~~"
  35. Application.VBE.CommandBars(1).FindControl(id:=2578, recursive:=True).Execute
  36.  
  37. Set vbProj = Nothing
  38.  
  39. End Sub

Encontre el siguiente el codigo es de estaa pagina:
http://www.pcreview.co.uk/forums/thread-987585.php

Si funciona bien, desprotege tal como yo queria, y ya no me marca error, el detalle es al protegerlo, si tu llamas al procedimiento de Proteger despues guardas y abres el libro, si esta protegiodo, te pide la contrase;a como debiera de ser, es decir la contrase;a que pide al intentar expandir el explorador de proyectos, osea que si funcioan.

Pero el detalle es si llamas al procedimiento de proteger, y despues infresas al Edidor de Visual Basic, ene se caso no te pide la contrase;a y el proyecto queda expuesto, y es lo que no quiero... Por que hara esto?

AProvecho para preguntarte Abrhama si eres tana amable, sabes si el Excel se puede configurar para que no puedan entrar al Editor de Visual Basic, o solo ciertas perosnas puedan hacerlo?

Saludos, posteo el codigo por si alguien le sirve asi...,

PD, el ejemplo que me pasaste lo reviso mas noche, pues aui no puedo, y la verdad si quiero solucionar esto de ya... Gracias...

Etiquetas: contraseña, ejecucion, excel, quitar, vba
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:05.