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

mckmonster
Messages postés
10
Date d'inscription
vendredi 2 mai 2003
Dernière intervention
6 décembre 2007
- 15 sept. 2005 à 11:07 - Dernière réponse : mckmonster
Messages postés
10
Date d'inscription
vendredi 2 mai 2003
Dernière intervention
6 décembre 2007
- 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 

Votre réponse

4 réponses

Meilleure réponse
sebmafate
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
- 15 sept. 2005 à 14:16
3
Merci
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

Merci sebmafate 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de sebmafate
sebmafate
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
- 15 sept. 2005 à 11:16
0
Merci
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
Messages postés
10
Date d'inscription
vendredi 2 mai 2003
Dernière intervention
6 décembre 2007
- 15 sept. 2005 à 14:09
0
Merci
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
Messages postés
10
Date d'inscription
vendredi 2 mai 2003
Dernière intervention
6 décembre 2007
- 15 sept. 2005 à 16:17
0
Merci
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.