IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Impossible de fermer le process 'Excel.exe'


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 22
    Points : 10
    Points
    10
    Par défaut Impossible de fermer le process 'Excel.exe'
    Bonjour,

    je développe avec Visual Studio 2005, Windows XP, Office 2007.

    Dans une .dll vb.net, j'ouvre un fichier excel pour y insérer des données:

    Début de la .dll:
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Imports Excel = Microsoft.Office.Interop.Excel
    ...
    Private excelApp As Excel.Application = Nothing
    
    Private excelWorkbook As Excel.Workbook = Nothing
    
    Private excelSheets As Excel.Sheets = Nothing
    
    Private excelWorksheet As Excel.Worksheet = Nothing
    
    J'ai une fonction (close) qui devrai supposément fermer correctement le process Excel, il y a ceci dedans:
    
    excelWorkbook.Close(vk_save_changes, vk_filename, vk_route_workbook)
    excelWorkbook = Nothing
    excelApp.Quit()
    excelApp = Nothing
    
    Dans le programme qui utilise cette .dll, j'instencie un objet de cette facon:
    
    Dim excel As New bizExcel.ATPMain.VkExcel(False)
    
    et je ferme cette objet de cette façon:
    
    excel.CloseFile(True)
    excel = Nothing
    Return True
    Pourtant, le process EXCEL.EXE est toujours présent dans mon Task Manager et un nouveau process se rajoute chaque fois que je créer un objet excel.

    Quelqu'un a une idée d'une bonne solution pour terminer correctement l'utilisation d'excel en vb.net ?

    Merci
    David

  2. #2
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    il doit rester une référence non libérée dans le code, il faudrait qu'on voit celui ci

  3. #3
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Citation Envoyé par bidou Voir le message
    il doit rester une référence non libérée dans le code, il faudrait qu'on voit celui ci
    Même pas forcément...
    C'est un problème que j'ai souvent constaté lorsqu'on pilote des application office.

    Une solution qui fonctionne systématiquement chez moi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp)
    A appeler juste après avoir fait "excelApp.Quit()"...

  4. #4
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp)
    Cette solution ne fonctionne pas chez tout le monde.

    Ce problème a déjà été soulevé sur le forum. Une solution, un peu radicale mais qui a le mérite de fonctionner, est disponible dans cet article : http://skalp.developpez.com/tutoriel...nexcel/#LIII-D

    La prochaine fois :

  5. #5
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    Jusqu'à présent je n'ai jamais rencontré un cas ou le processus Excel ne se ferme pas quand le code de pilotage est bien écrit

  6. #6
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    Citation Envoyé par bidou Voir le message
    Jusqu'à présent je n'ai jamais rencontré un cas ou le processus Excel ne se ferme pas quand le code de pilotage est bien écrit
    Ben pourtant, je témoigne que cela arrive. Même avec du code de pilotage hyper propre et des opérations fort simples, j'ai vu des processus Excel persister sans aucune raison visible. C'est à se taper la tête contre un mur !

    Citation Envoyé par skalp
    Cette solution ne fonctionne pas chez tout le monde.
    Couplée à un code de pilotage propre, elle a toujours fonctionné pour moi.

    Aller tuer le processus me paraît effectivement un peu radical...

Discussions similaires

  1. [Débutant] Pointer sur le bon process Excel.Exe
    Par Jean-Philippe André dans le forum C#
    Réponses: 1
    Dernier message: 30/07/2014, 14h25
  2. [PPT-2010] Impossible de fermer un fichier excel
    Par cv1966 dans le forum VBA PowerPoint
    Réponses: 5
    Dernier message: 05/06/2014, 13h55
  3. Impossible de fermer un classeur Excel
    Par seremei dans le forum Langage
    Réponses: 5
    Dernier message: 08/01/2013, 11h29
  4. fermer le processus EXCEL.EXE
    Par bakman dans le forum VBScript
    Réponses: 3
    Dernier message: 26/11/2009, 13h43
  5. Fermer l'animation (swf/exe lancé depuis Windows)
    Par ZiZouJH dans le forum Flash
    Réponses: 3
    Dernier message: 14/01/2003, 10h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo