Salut
Apres quelques recherche (Google est ton ami
)
il existe la propriété
Application.ActiveWorkbook.VBProject.Protection
mais celle ci est en lecture seule, ce qui indique déjà une volonté de ne pas la rendre accessible en écriture.
J'ai trouvé , toujours sur google une "méthode" en utilisant l'api sendkey ... mais bon si j'etais toi je ferais sans, enfin a toi de voire
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| Public Sub UnprotectVBAProject()
'This has been tested in E97 only.
On Error GoTo ErrHandler
Const conPW as String = "MyPassword"
'Open VBE
Call SendKeys("%{F11}", True)
'Open Project Explorer
Call SendKeys("%(V)P", True)
'PageUp 5 times to be sure "VBAProject" is selected
Call SendKeys("{PGUP 5}", True)
'Hit Enter to give prompt, enter PW and Enter again.
Call SendKeys("{ENTER}" & conPW & "{ENTER}", True)
ExitProcedure:
Exit Sub
ErrHandler:
Select Case Err.Number
Case Else
Application.ScreenUpdating = True
MsgBox Err.Number & vbNewLine & Err.Description,
vbCritical
Resume ExitProcedure
Resume
End Select
End Sub |
Source du code
En gros, lorsque tu lances cette macro, ça ouvre la fenêtre de l'éditeur VB, et sa simule des raccourcis ou des touches clavier afin de faire afficher la fenêtre de demande password, puis ça saisi le password. Mais bon encore une fois, c'est du bricolage... vu que le nom du projet est inscrit null part dans la macro, je présume que ça essai d'ouvrir le premier projet venu...
Autant donner le mot de passe de ton code vba directement, quel intérêt de donner un autre mot de passe pour deverouiller un code avec un mot de passe différent ... . D'autant plus qu'une fois le projet VBA deverouillé, la personne aura accès à ta macro unprotect et vera donc le MP du Projet VB écrit en dur dans ton code..... il faudrait alors passer par un fichier xla qui contient ta macro de déverrouillage, a mon avis ça devient très vite une usine a gaz.
A++
Qwaz
Partager