OVH Cloud OVH Cloud

VBProject.Unprotect PassWord="???" Marche pas !!

2 réponses
Avatar
Hamelin-Lecardonnel SA
Bonjour,

J'ai conçu un exécutable VB6 qui ouvre des classeurs Excel (Tous issus d'un
même modèle). A la suite d'une erreur sur le modèle (cf qq message plus
haut), l'exécutable doit corriger le code de chacun des classeurs à leur
prochaine ouverture.

Ce newsgroup m'a donné de précieuses informations sur l'utilisation de
l'objet VBProject pour modifier le code, cependant, je rencontre un pb de
protection de module (pour faire simple j'ai donné un mot de passe au
VBAProject pour l'ensemble de mes classeurs : les mots de passe sont tous
identiques).

Je ne trouve pas de méthode MonWorkbook.VBProjet.Unprotect PassWord
:="MonMotDepasse" pour l'objet VBProject comme il en existe pour l'objet
Sheets.

L'exécutable plante sur ce problème de mot de passe ... Comment passer ?

Bruno

2 réponses

Avatar
popi
"Hamelin-Lecardonnel SA" a écrit dans
le message de news: bg5eb7$qsd$
Bonjour,

J'ai conçu un exécutable VB6 qui ouvre des classeurs Excel (Tous issus
d'un

même modèle). A la suite d'une erreur sur le modèle (cf qq message plus
haut), l'exécutable doit corriger le code de chacun des classeurs à leur
prochaine ouverture.

Ce newsgroup m'a donné de précieuses informations sur l'utilisation de
l'objet VBProject pour modifier le code, cependant, je rencontre un pb de
protection de module (pour faire simple j'ai donné un mot de passe au
VBAProject pour l'ensemble de mes classeurs : les mots de passe sont tous
identiques).

Je ne trouve pas de méthode MonWorkbook.VBProjet.Unprotect PassWord
:="MonMotDepasse" pour l'objet VBProject comme il en existe pour l'objet
Sheets.

L'exécutable plante sur ce problème de mot de passe ... Comment passer ?

Bruno

Salut Bruno, as-tu creusé dans la mine d'or de Frédéric Sigonneau ?? ;-)


http://perso.wanadoo.fr/frederic.sigonneau/VBE.htm

@+ popi

Avatar
Frédéric Sigonneau
Bonjour,

Puisque tu connais le mot de passe, la bidouille ci-dessous, récupérée sur le
forump anglophone, devrait te rendre service..

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !

'=========================== 'Bill Manville, mpep

Sub TestProtect()
ProtectVBProject Workbooks("Perso.xls"), "zaza"
End Sub

Sub TestUnprotect()
UnprotectVBProject Workbooks("Perso.xls"), "zaza"
'pour qu'Excel reconnaisse la nouvelle situation (déprotection)
DoEvents
With Workbooks("Perso.xls")
'ajout d'un module standard
.VBProject.VBComponents.Add 1
End With
End Sub

Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
Dim vbProj As Object

Set vbProj = WB.VBProject

'can't do it if already unlocked!
If vbProj.Protection <> 1 Then Exit Sub

Set Application.VBE.ActiveVBProject = vbProj

' now use lovely SendKeys to quote the project password
SendKeys Password & "~~"
Application.VBE.CommandBars(1).FindControl(ID:%78, recursive:=True).Execute
End Sub

Sub ProtectVBProject(WB As Workbook, ByVal Password As String)
Dim vbProj As Object

Set vbProj = WB.VBProject

'can't do it if already locked!
If vbProj.Protection = 1 Then Exit Sub

Set Application.VBE.ActiveVBProject = vbProj

' now use lovely SendKeys to set the project password
SendKeys "+{TAB}{RIGHT}%V{+}{TAB}" & Password & "{TAB}" & _
Password & "~"

Application.VBE.CommandBars(1).FindControl(ID:%78, recursive:=True).Execute

WB.Save
End Sub
'===========================

Bonjour,

J'ai conçu un exécutable VB6 qui ouvre des classeurs Excel (Tous issus d'un
même modèle). A la suite d'une erreur sur le modèle (cf qq message plus
haut), l'exécutable doit corriger le code de chacun des classeurs à leur
prochaine ouverture.

Ce newsgroup m'a donné de précieuses informations sur l'utilisation de
l'objet VBProject pour modifier le code, cependant, je rencontre un pb de
protection de module (pour faire simple j'ai donné un mot de passe au
VBAProject pour l'ensemble de mes classeurs : les mots de passe sont tous
identiques).

Je ne trouve pas de méthode MonWorkbook.VBProjet.Unprotect PassWord
:="MonMotDepasse" pour l'objet VBProject comme il en existe pour l'objet
Sheets.

L'exécutable plante sur ce problème de mot de passe ... Comment passer ?

Bruno