63 votes

Suppression du mot de passe d'un projet VBA

Comment supprimer par programme un mot de passe (connu) d'un projet Excel VBA ?

Pour être clair : je veux supprimer le mot de passe du projet VBA, pas du classeur ou des feuilles de calcul.

0 votes

J'ai fait quelques recherches sur Internet - il semble qu'il n'y ait pas de moyen direct - il faut utiliser un bidule de sendkeys. http://www.mrexcel.com/forum/showthread.php?t=49034

4 votes

La réponse marquée n'est PAS la meilleure.... la meilleure réponse est venue des années plus tard par Uygar Y

4 votes

@JeremyThompson - cette réponse ne répond pas à cette question. Elle explique comment supprimer manuellement un mot de passe inconnu. Cette question demande comment de manière programmée supprimer un connu sous le nom de mot de passe.

135voto

Uygar Y Points 793

Une autre façon de supprimer le mot de passe d'un projet VBA ;

  • Ouvrez le fichier xls avec un éditeur hexagonal. (ex. Hex Edit http://www.hexedit.com/ )
  • Recherche de DPB
  • Remplacer DPB par DPx
  • Sauvegarder le fichier.
  • Ouvrez le fichier dans Excel.
  • Cliquez sur "Oui" si vous obtenez une boîte de message.
  • Définir un nouveau mot de passe à partir des propriétés du projet VBA.
  • Fermez et ouvrez à nouveau le fichier, puis tapez votre nouveau mot de passe pour le déprotéger.

UPDATE : Pour Excel 2010 (Travaux pour MS Office Pro Plus 2010 [14.0.6023.1000 64bit]),

  • Ouvrir le fichier XLSX avec 7zip

Si le classeur est protégé :

  • Parcourir le dossier xl
  • Si le classeur est protégé, faites un clic droit workbook.xml et sélectionnez Modifier
  • Trouvez la portion <workbookProtection workbookPassword="XXXX" lockStructure="1"/> ( XXXX est votre mot de passe crypté)
  • Retirer XXXX partie. (c'est-à-dire. <workbookProtection workbookPassword="" lockStructure="1"/> )
  • Enregistrez le fichier.
  • Lorsque 7zip vous demande de mettre à jour l'archive, dites Oui .
  • Fermez 7zip et ouvrez à nouveau votre XLSX.
  • Cliquez sur Cahier de protection sur Consultez le site onglet.
  • Facultatif : Enregistrez votre fichier.

Si les feuilles de calcul sont protégées :

  • Parcourir pour xl/worksheets/ dossier.
  • Cliquez avec le bouton droit de la souris sur le Sheet1.xml , sheet2.xml etc. et sélectionnez Modifier .
  • Trouvez la portion <sheetProtection password="XXXX" sheet="1" objects="1" scenarios="1" />
  • Supprimez le mot de passe crypté (ex. <sheetProtection password="" sheet="1" objects="1" scenarios="1" /> )
  • Enregistrez le fichier.
  • Lorsque 7zip vous demande de mettre à jour l'archive, dites Oui .
  • Fermez 7zip et ouvrez à nouveau votre XLSX.
  • Cliquez sur Feuille de déprotection sur Consultez le site onglet.
  • Facultatif : Enregistrez votre fichier.

0 votes

Ça a marché pour moi. J'ai également dû cliquer plusieurs fois sur "Ok" lors de l'affichage du code VBA.

6 votes

Et un autre ajout à la réponse originale : Si vous avez un fichier xlsx, ouvrez-le dans Excel et "Enregistrez sous" xls. Puis suivez les étapes ci-dessus...

6 votes

Si vous avez un .xlsx vous pouvez également le décompresser, effectuer la recherche/remplacement sur le fichier xl/vbaProject.bin puis ré-assembler le fichier.

25voto

Joji Thomas Eapen Points 1037

J'ai trouvé un autre moyen de résoudre ce problème en évitant le mot de passe du projet VBA, sans perdre le mot de passe Excel.

utiliser Éditeur hexagonal XVI32 pour le processus

si le type de fichier est un fichier XLSM :

  1. Ouvrez le fichier XLSM avec 7-Zip (clic droit -> 7-Zip -> Ouvrir l'archive).
  2. Copiez le fichier xl/vbaProject.bin hors du fichier (vous pouvez faire un glisser-déposer depuis 7-Zip), ne fermez pas 7-Zip.
  3. Ouvrir le fichier vbaProject.bin avec HexEdit
  4. Recherchez "DPB=" et remplacez-le par "DPx=".
  5. Sauvegarder le fichier
  6. Copiez ce fichier dans 7-Zip (là encore, le glisser-déposer fonctionne).
  7. Ouvrez le fichier XLSX dans Excel, si vous êtes invité à "Continuer à charger le projet", cliquez sur Oui. Si des erreurs sont signalées, cliquez sur OK.
  8. Appuyez sur Alt+ F11 pour ouvrir l'éditeur VBA.
  9. Pendant que vous appuyez, le message d'erreur "Unexpected error (40230)" s'affiche, cliquez simplement sur OK (6 ou 7 fois) jusqu'à ce qu'il disparaisse.
  10. Il s'ouvrira alors automatiquement

5 votes

Cette astuce a fonctionné pour moi...mais avec une petite modification...à l'étape:9 l'erreur n'allait pas après 20-25 clics aussi. J'ai enregistré le fichier dans un autre et cela a fonctionné.

3 votes

Cela a fonctionné pour moi dans Excel 2016 64 bit. Et vous n'avez pas vraiment besoin d'un éditeur hexagonal. Vous pouvez rechercher et remplacer (étape 4) en utilisant notepad++ ou tout autre éditeur de texte similaire. Le commentaire précédent est également vrai. "Unexpected error (40230)" disparaît après avoir enregistré comme un nouveau fichier XLSM et rouvert excel.

0 votes

J'avais un xls et Excel 2016. L'utilisation de l'aide de Mikes a fonctionné lorsque j'ai changé le fichier de xls à xlsm . Je n'ai pas eu besoin 7-zip pour obtenir un fichier bin.

10voto

Jon Fournier Points 2435

Il s'agit d'une méthode simple utilisant SendKeys pour déprotéger le projet VBA. Cela vous permet d'accéder au projet, et vous devez continuer à utiliser SendKeys pour trouver un moyen de supprimer la protection par mot de passe : http://www.pcreview.co.uk/forums/thread-989191.php

Et en voici un qui utilise une méthode de déprotection plus avancée et un peu plus fiable. Encore une fois, il ne déverrouillera que le projet VB pour vous. http://www.ozgrid.com/forum/showthread.php?t=13006&page=2

Je n'ai pas essayé l'une ou l'autre méthode, mais cela peut vous faire gagner du temps si c'est ce que vous devez faire...

1 votes

J'ai le code. Que faire avec ? Je ne peux pas ouvrir VBEditor, ni exécuter quelque chose, car le projet est verrouillé, donc, tout nouveau script n'est pas possible à exécuter !?

0 votes

+ 1 :) @serhio : Une autre façon d'utiliser APIS

2 votes

Réponse d'Uygar Y ci-dessous est toujours une réponse pertinente qui fonctionne avec Office 2016. Le fait qu'elle fonctionne complètement et facilement sape toutes les attentes que l'on pourrait avoir concernant l'utilisation des mots de passe Office pour sécuriser les documents. Je n'ai jamais eu une grande confiance en eux, supposant qu'ils pouvaient être désactivés avec des heures de travail informatique, mais sa réponse a fonctionné pour moi avec deux minutes de travail. Les mots de passe empêchent les personnes honnêtes et non informaticiennes d'entrer, mais c'est surtout de la poudre aux yeux, à mon avis.

4voto

Timo Points 82

Mes deux centimes sur Excel 2016 :

  1. ouvrir le xls avec Notepad++
  2. Recherche de DPB= et le remplacer par DPx=
  3. Sauvegarder le fichier
  4. Ouvrir le fichier, ouvrir l'éditeur VB, les modules ouverts ne fonctionneront pas ( error 40230 )
  5. Enregistrez le fichier en tant que xlsm
  6. Cela fonctionne

3voto

JFV Points 1486

J'ai trouvé ceci ici qui décrit comment définir le mot de passe du projet VBA. Vous devriez être en mesure de le modifier pour annuler le mot de passe du projet VBA.

Celui-ci n'utilise pas SendKeys.

Faites-moi savoir si cela vous aide ! JFV

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X