Bonjour,
J'ai un programme qui doit traiter en automatique (donc sans intervention humaine) des fichiers doc, xls et ppt.
Le problème est que les fichiers soumis peuvent avoir ou non des mots de passe (auquel cas, le programme ne doit pas les traiter).
Concernant Word et Excel, pour détecter des fichiers protégés par mot de passe, il suffit de passer en paramètre de la méthode Open un mot de passe vide et de catcher l'erreur qui correspond (exemple de code ci-dessous)
Par contre, pour POWER POINT, je n'ai pas trouvé de solution car la méthode Open ne prend pas de mot de passe en paramètre :
=> Je ne peux pas catcher d'erreur, l'application se bloque avec un invite de commande demandant le mot de passe...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Microsoft.Office.Interop.PowerPoint.ApplicationClass pptApplication = new Microsoft.Office.Interop.PowerPoint.ApplicationClass(); Presentation docPpt = null; try { docPpt = pptApplication.Presentations.Open(fichierPpt, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse);
=> Y a-t-il une solution ? Peut-on catcher la pop-up qui s'ouvre demandant le mot de passe ?
Merci de toute aide
Pour ceux que cela intéresse, voici le code pour Word et Excel :
Code pour Word :
Code pour Excel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Microsoft.Office.Interop.Word.ApplicationClass wordApplication = new Microsoft.Office.Interop.Word.ApplicationClass(); Document docWord = null; object paramPassword = ""; object paramMissing = Type.Missing; try { docWord = wordApplication.Documents.Open(ref fichierWord, ref paramMissing, ref paramMissing, ref paramMissing, ref paramPassword, ref paramMissing, ref paramMissing, ref paramMissing, ref paramMissing, ref openFormat, ref paramMissing, ref paramMissing, ref paramMissing, ref paramMissing, ref paramMissing, ref paramMissing); } catch (System.Runtime.InteropServices.COMException exProtect) { string labelError = exProtect.ToString(); if (labelError.Contains("Mot de passe non valide")) {.......etc
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Microsoft.Office.Interop.Excel.ApplicationClass excelApplication = new Microsoft.Office.Interop.Excel.ApplicationClass(); Workbook excelWorkBook = null; object paramMissing = Type.Missing; object paramUpdateLinks = 2; // permet de dire de ne pas mettre à jour les liens du fichier excel object paramPassword = ""; try { excelWorkBook = excelApplication.Workbooks.Open(fichierExcel, paramUpdateLinks, paramMissing, paramMissing, paramPassword, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing); } catch (System.Runtime.InteropServices.COMException exProtect) { string labelError = exProtect.ToString(); if (labelError.Contains("Mot de passe non valide")) {.... etc
Partager