Probleme ouverture fichier word avec mot de passe

zak2zouk Messages postés 6 Date d'inscription dimanche 6 août 2006 Statut Membre Dernière intervention 10 juin 2014 - Modifié par jordane45 le 9/06/2014 à 20:25
zak2zouk Messages postés 6 Date d'inscription dimanche 6 août 2006 Statut Membre Dernière intervention 10 juin 2014 - 10 juin 2014 à 11:52
Bonjour,
J'ai un problème de longueur de mot de passe sur l'ouverture d'un fichier word avec c# et le framework (visual sudio 2013 et Framework 4.5 sous windows 8.1 avec office 365)
voila le code

using MSWord = Microsoft.Office.Interop.Word;

string NomFichier = @"C:\essai.docx"
string Password = "0123456789ABCDE"
 
MSWord.Application word = new MSWord.Application();
word.Visible = true;
MSWord.Document doc = word.Documents.Open(NomFichier,  PasswordDocument: Password);


J'ai bien sur simplifier et garder seulement les lignes utiles. Lorsque je lance le programme ainsi avec ce password cela marche parfaitement et j'ouvre ma fenêtre word avec mon fichier (le mot de passe fait 15 caractères), si je modifie le mot de passe pour "0123456789ABCDEF" soit 16 caractères j'ai une erreur de type "La commande a échouée" HResult -2146824090 ou 0X800A1066.
Bien sur c'est le bon mot de passe de mon fichier et cela marche en manuel!.
Après de nombreux essais il semble que si le mot de passe est inférieur a 16 caractères aucun pb au delà a partir de 16 ça ne marche plus. J'avoue être au bout de mes idées si quelqu'un peut m'aider merci d'avance.
--

1 réponse

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
9 juin 2014 à 20:37
Bonjour,

je pense que tu peux mettre un bloc try pour essayer d'en savoir plus sur l'erreur rencontrée.

ensuite, tu peux essayer avec cette syntaxe :

Microsoft.Office.Interop.Word.ApplicationClass app = new Microsoft.Office.Interop.Word.ApplicationClass();
Microsoft.Office.Interop.Word.Document doc = null;

object missing = System.Reflection.Missing.Value;
object FileName = @"C:\essai.docx";
object isVisible = true;
object password = "0123456789ABCDE";

      try
       {
          doc = app.Documents.Open(ref FileName, ref missing, ref readOnly,ref missing, ref password, ref missing, ref missing, ref missing,ref missing, ref missing, ref missing, ref isVisible, ref missing,ref missing, ref missing, ref missing);
         }
         catch (Exception e)
          {
            Console.WriteLine("{0} Exception caught.", e);
          }


0
zak2zouk Messages postés 6 Date d'inscription dimanche 6 août 2006 Statut Membre Dernière intervention 10 juin 2014
10 juin 2014 à 11:52
Merci Jordane45 pour ta réponse.
j'ai bien un bloc try catch a un niveau supérieur, je ne l'ai pas mis pour simplifier, je n'est mis que le code utile.
dans le catch la seule infos que je récupère dans l'Exeption est :"La commande a échouée" HResult -2146824090 ou 0X800A1066, par contre quand le mot de passe est inférieur a 16 caractères et que je met un mauvais password dans mon traitement j'obtiens bien une erreur "Mot de passe erroné" ...
En ce qui concerne ton code j'ai une erreur de compilation "ApplicationClass ne peut être implémenté", pour ce qui concerne l'usage des ref et de la syntaxe complète j'ai déjà essayé sans succès.
désolais c'est pas la bonne solution mais merci de t'intéresser a mon problème.


--
0
Rejoignez-nous