Problème sur un process Excel qui reste actif après utilisation de Excel.Applica [Résolu]

mckmonster 10 Messages postés vendredi 2 mai 2003Date d'inscription 6 décembre 2007 Dernière intervention - 15 sept. 2005 à 11:07 - Dernière réponse : mckmonster 10 Messages postés vendredi 2 mai 2003Date d'inscription 6 décembre 2007 Dernière intervention
- 15 sept. 2005 à 16:17
Salut,

J'ai un petit soucis qui est que j'ai le process Excel qui reste ouvert lorsque je quitte mon appli.



Le code que j'ai en gros :

<hr size="2" width="100%">public class Test

{

private ApplicationClass xlApp = null;

private Workbook excelWB;



public Test()

{

}



public void Open()

{

xlApp = new ApplicationClass();



excelWB = xlApp.Workbooks.Open(tmpFileInfo.FullName, 1, Type.Missing,


Type.Missing, Type.Missing,
Type.Missing, Type.Missing,


Type.Missing, Type.Missing,
Type.Missing, Type.Missing,


Type.Missing, Type.Missing,
Type.Missing, Type.Missing);

}



public void Save()

{

excelWB.SaveAs(excelWB.FullName, Type.Missing,
Type.Missing, Type.Missing, false, false,

XlSaveAsAccessMode.xlShared, Type.Missing, true,
Type.Missing, Type.Missing, Type.Missing);

}



public void Close()

{

excelWB.Close(false,Type.Missing,Type.Missing);


excelWB = null;



xlApp.DisplayAlerts = false;

xlApp.Quit();

xlApp = null;

}

}

<hr size="2" width="100%">

Le programme sort dès que j'arrive sur la dernière ligne.


Pour info, j'ouvre plusieurs fichier Excel et lorsque je quitte le programme, j'appelle la fonction Close.

Mais tout les process Excel qui était démarré reste en route.



Merci d'avance
Afficher la suite 

4 réponses

Répondre au sujet
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 15 sept. 2005 à 14:16
+3
Utile
en fait, faut faire un ReleaseComObject sur tous les objets COM ouvert...



public void Close()

{

excelWB.Close(false,Type.Missing,Type.Missing);
while (Marshal.ReleaseComObject (excelWB) > 0);


excelWB = null;



xlApp.DisplayAlerts = false;

xlApp.Quit();



while (Marshal.ReleaseComObject (xlApp) > 0);

xlApp = null;

}


Sébastien FERRAND
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de sebmafate
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 15 sept. 2005 à 11:16
0
Utile
Ne pas oublier de faire un ReleaseComObject sur le xlApp...



public void Close()

{

excelWB.Close(false,Type.Missing,Type.Missing);

excelWB = null;



xlApp.DisplayAlerts = false;

xlApp.Quit();



while (Marshal.ReleaseComObject (xlApp) > 0);

xlApp = null;

}


Sébastien FERRAND
Commenter la réponse de sebmafate
mckmonster 10 Messages postés vendredi 2 mai 2003Date d'inscription 6 décembre 2007 Dernière intervention - 15 sept. 2005 à 14:09
0
Utile
Je viens d'essayer et les process "Excel.exe" dans le gestionnaire de tache sont tjs present.



Ce que je fais en attendant, c'est chercher tout les process "Excel" qui n'ont pas de fenetre et je les kill,

mais je trouve pas ça propre.
Commenter la réponse de mckmonster
mckmonster 10 Messages postés vendredi 2 mai 2003Date d'inscription 6 décembre 2007 Dernière intervention - 15 sept. 2005 à 16:17
0
Utile
Ok, c'est bon ça fonctionne.

Merci
Commenter la réponse de mckmonster

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.