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

Delphi Discussion :

Liberer un TExcelApplication sans fermer Excel


Sujet :

Delphi

  1. #1
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2002
    Messages : 223
    Par défaut Liberer un TExcelApplication sans fermer Excel
    Salut, petite question :

    je lance Excel et j'effectue quelques traitements par le code suivant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      // Create Excel wrapper
      FMSExcel := TExcelApplication.Create(nil);
      ...
      FreeAndNil(FMSExcel);
    A la fin, je voudrais libérer mon instance TExcelApplication, sans fermer Excel ... or, cela parait inevitable.
    Si je ne libere pas mon instance FMSExcel , Excel reste bien ouvert, mais j'ai un memory leak puisque le wrapper n'est pas libéré.

    Avez-vous une idée ?

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut,
    il faut peut être se déconnecter de l'instance auparavant ?
    Je n'ai pas le code sous les yeux mais dans ce cas il se peut qu'elle se libére automatiquement.
    As-tu essayé d'exécuter Excel indépendamment puis de t'y connecter au travers de TExcelApplication...
    [edit]
    Toute manipulation de TExcelApplication s'appuie sur une interface donc le compteur de référence entre en jeux.

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2002
    Messages : 223
    Par défaut
    Citation Envoyé par Laurent Dardenne
    il faut peut être se déconnecter de l'instance auparavant ?
    Idem si je me deconnecte avant de liberer l'instance.

    Citation Envoyé par Laurent Dardenne
    As-tu essayé d'exécuter Excel indépendamment puis de t'y connecter au travers de TExcelApplication...
    Ce n'est pas ce que je cherche à faire, mais j'essayerai pour voir. Si ca marche, ca ne m'avance pas plus
    Citation Envoyé par Laurent Dardenne
    Toute manipulation de TExcelApplication s'appuie sur une interface donc le compteur de référence entre en jeux.
    C'est tout à fait normal est justifié, mais liberer l'instance veut-il dire obligatoirement fermeture de EXCEL ?

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par trident_job
    Si ca marche, ca ne m'avance pas plus
    Par indépendamment je voulais dire via un CreateProcess ou ShellExecute au sein de ton appli.
    Dans ton cas Excel doit exister comme un process et pas comme un objet OLE Automation. Mais je l'ai testé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     //oncreate
    ...
    ExcelApplication1.ConnectKind := ckRunningInstance;
    ...
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
      //ExcelApplication1.Quit; //ferme le process Xl actif
      // ExcelApplication1.Disconnect; // ne ferme pas XL
      // aucun code -> free de ExcelApplication1 // ne ferme pas XL
    end;
    Citation Envoyé par trident_job
    mais liberer l'instance veut-il dire obligatoirement fermeture de EXCEL ?
    Comme tu l'énonces c'est non mais pour COM c'est oui
    S'il existe un moyen je ne le connais pas.

Discussions similaires

  1. [XL-2007] Fermer excel sans passer par la croix
    Par apdf1 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/11/2011, 08h12
  2. Fermer Excel sans sauvegarder le classeur
    Par GonAl dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/08/2006, 12h32
  3. Changer de session sans fermer la session en cours sous XP
    Par Australia dans le forum Windows XP
    Réponses: 9
    Dernier message: 03/03/2006, 09h28
  4. Provoquer une déconnexion sans fermer le navigateur
    Par Musty dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 10/10/2005, 01h20
  5. [EXCEL] TExcelApplication sans Excel
    Par ms91fr dans le forum Composants VCL
    Réponses: 3
    Dernier message: 30/01/2004, 13h44

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