Probleme pour deverouiller le code VBE OleExcel
Suite a un poste de Sunchaser demandant comment deverouiller un code VBE pour effectuer des modifications et reverouiller le code VBE (en connaissant le mot de passe bien sur), j'ai trouve un exemple que j'essaie de traduire en OleExcel et la j'ai un probleme le code appel une boite de dialogue pour entrer le mot de passe et une fonction passe le mot de passe et valide, deja je ne suis pas sur que j'appel la boite de dialogue mais de plus la fonction qui doit passer le mot de passe ecrit jusque dans le code BCB si quelqu'un a une idee.
Je joind le code VBE
Citation:
Sub TestUnprotect()
UnprotectVBProject Workbooks("Proteger_deproteger.xls"), "motdepasse"
End Sub
Sub UnprotectVBProject(WB As Workbook, ByVal Password As String)
Dim vbProj As Object
Set vbProj = WB.VBProject
If vbProj.Protection <> 1 Then Exit Sub
Set Application.VBE.ActiveVBProject = vbProj
SendKeys Password & "~~"
Application.VBE.CommandBars(1).FindControl(ID:=2578, recursive:=True).Execute
End Sub
et ce que j'ai commence a coder
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
Variant vbProj, ID, recursive;
vbProj = vXLWorkbook.OlePropertyGet("VBProject");
if (vbProj.OlePropertyGet("Protection") != 1)
{
ShowMessage("erreur"); // a traiter plus tard Then Exit Sub
}
// on ouvre la boite de dialogue password
vMSExcel.OlePropertyGet("VBE").OlePropertyGet("ActiveVBProject") = vbProj;
// on ecrit le password et on valide
vMSExcel.OleFunction("SendKeys", "jp", & "~~");
// la ligne suivant provoque une erreur
//vMSExcel.OlePropertyGet("VBE").OlePropertyGet("CommandBars", 1).OleProcedure("FindControl", (ID = 2578, recursive = True)).OleProcedure("ID", 2578);//.OlePropertyGet("recursive", True).OleFunction("Execute"); |