Probleme ouverture fichier word avec mot de passe

Signaler
Messages postés
6
Date d'inscription
dimanche 6 août 2006
Statut
Membre
Dernière intervention
10 juin 2014
-
Messages postés
6
Date d'inscription
dimanche 6 août 2006
Statut
Membre
Dernière intervention
10 juin 2014
-
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

Messages postés
31218
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 janvier 2021
342
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);
          }


Messages postés
6
Date d'inscription
dimanche 6 août 2006
Statut
Membre
Dernière intervention
10 juin 2014

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.


--