web-dev-qa-db-fra.com

Supprimer le mot de passe d'un projet VBA

Comment puis-je 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 le classeur ou les feuilles de calcul.

49
Barry-Jon

Cela a une méthode simple en utilisant SendKeys pour déprotéger le projet VBA. Cela vous ferait entrer dans le projet, donc vous devriez 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 voici une solution qui utilise une méthode plus avancée et un peu plus fiable pour supprimer la protection. 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 essayé aucune de ces méthodes, mais cela peut vous faire gagner du temps si c'est ce que vous devez faire ...

9
Jon Fournier

Une autre façon de supprimer le mot de passe du projet VBA consiste à:

  • Ouvrez le fichier xls avec un éditeur hexadécimal. (ie. Hex Edit http://www.hexedit.com/ )
  • Recherche DPB
  • Remplacer DPB en DPx
  • Enregistrer le fichier.
  • Ouvrir le fichier dans Excel.
  • Cliquez sur "Oui" si vous recevez une boîte de message.
  • Définissez le 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 déprotéger.

UPDATE: pour Excel 2010 (fonctionne pour MS Office Pro Plus 2010 [14.0.6023.1000 64 bits]),

  • Ouvrez le fichier XLSX avec 7Zip

Si le classeur est protégé:

  • Parcourir le dossier xl
  • Si le classeur est protégé, cliquez avec le bouton droit de la souris sur workbook.xml Et sélectionnez Modifier .
  • Trouvez la portion <workbookProtection workbookPassword="XXXX" lockStructure="1"/> (XXXX est votre mot de passe crypté)
  • Supprimez la partie XXXX. (ie. <workbookProtection workbookPassword="" lockStructure="1"/>)
  • Enregistrez le fichier.
  • Lorsque 7Zip vous demande de mettre à jour l'archive, dites Oui .
  • Fermez 7Zip et rouvrez votre XLSX.
  • Cliquez sur Protéger le classeur dans l'onglet Consulter .
  • Facultatif: enregistrez votre fichier.

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

  • Accédez au dossier xl/worksheets/.
  • Cliquez avec le bouton droit de la souris sur Sheet1.xml, sheet2.xml, Etc. et sélectionnez Éditer .
  • Trouvez la portion <sheetProtection password="XXXX" sheet="1" objects="1" scenarios="1" />
  • Supprimez le mot de passe crypté (c.-à-d. <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 rouvrez votre XLSX.
  • Cliquez sur pour ôter la protection de la feuille dans l'onglet Consulter .
  • Facultatif: enregistrez votre fichier.
112
Uygar Y

J'ai trouvé un autre moyen de résoudre ce problème afin d'éviter le mot de passe de VBA Project, sans perdre le mot de passe Excel.

utilisez Hex-editor XVI32 pour le processus

si le type de fichier est XLSM:

  1. Ouvrez le fichier XLSM avec 7-Zip (clic droit -> 7-Zip -> Ouvrir l’archive).
  2. Copiez le fichier xl/vbaProject.bin en dehors du fichier (vous pouvez le glisser-déposer de 7-Zip), ne fermez pas 7-Zip
  3. Ouvrez 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 (encore une fois, faites glisser et déposez les œuvres)
  7. Ouvrez le fichier XLSX dans Excel. Si vous êtes invité à "Continuer le chargement du projet", cliquez sur Oui. Si vous y êtes invité avec des erreurs, cliquez sur OK.
  8. Appuyez sur Alt + F11 pour ouvrir l'éditeur VBA.
  9. Lorsque vous appuyez sur, l'erreur "Erreur inattendue (40230)" s'affiche. Cliquez simplement sur OK (6 ou 7 fois) jusqu'à ce que le problème disparaisse.
  10. Ensuite, il s'ouvrira automatiquement
12
Joji Thomas Eapen

J'ai trouvé ceci ici qui décrit comment définir le mot de passe du projet VBA. Vous devriez pouvoir le modifier pour supprimer le mot de passe du projet VBA.

Celui-ci n'utilise pas SendKeys.

Faites-moi savoir si cela aide! JFV

2
JFV