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 :

Fermer Excel après ouverture OLE


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 36
    Par défaut Fermer Excel après ouverture OLE
    Bonjour à tous

    J'ai fait un petit utilitaire afin de convertir des fichiers Excel en CSV. J'ai consulté la FAQ, et ca donne ceci :
    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
     
          try
            vMSExcel := GetActiveOleObject('Excel.Application');
          except
            vMSExcel := CreateOleObject('Excel.Application');
            vMSExcel.Visible := true;
          end;
     
          vXLWorkbooks := vMSExcel.Workbooks;
          vXLWorkbook := vXLWorkbooks.Open(slFile[i]);
     
          sFileDest := ExtractFilePath(ParamStr(0)) + 'CSV\' + ChangeFileExt(ExtractFileName(slFile[i]), '.');
          if FileExists(sFileDest) then
            DeleteFile(sFileDest);
     
          vXLWorkbook.SaveAs(sFileDest, xlText, false);
    Tout fonctionne bien. Mais mon soucis est que j'ai environ 300 - 400 fichiers a traiter en même temps, donc ce code est utilisé dans une boucle. Mes fichiers sont bien convertit en CSV, mais je me retrouve avec 300 - 400 instances d'Excel ouvertes .

    J'ai donc rajouter ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        vMSExcel.Quit;
        vMSExcel := unassigned;
    et ca ferme bien Excel. Sauf que Excel réagit comme il se doit, a savoir que comme le fichier est en CSV, il me demande si je veux l'enregistrer pour le sauvegarder au format XLS (Voulez vous enregistrez les modification apportées ...).

    Est ce que je peux empécher la demande d'enregistrement autrement que par le réenregistrer en XLS après l'enregistrement en CSV ?

    Merci d'avance
    Birdyz

  2. #2
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Peut-être avec ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ExcelApplication.DisplayAlerts[ lcid ] := False;
    ...
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 36
    Par défaut
    Ben en fait, je n'ai pas de ExcelApplication
    J'ai suivi ce qu'il y avait dans la FAQ, et ma variable vMSExcel est de type variant et non TExcelApplication. J'ai essayé de la transtypé, mais Delphi en veux pas

  4. #4
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vMSExcel.DisplayAlerts[...] :=
    ne fontionne pas pas ? peut-être sans le lcid

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vMSExcel.DisplayAlerts :=
    sinon je sais pas, effectivement moi j'utilise toujours le composant de la barre d'outils qui encapsule

    et j'utilise le DisplayAlerts qui marche bien et qui supprime les messages de confirmation de sauvegarde...
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 36
    Par défaut
    ca marche pas. Je vais regarder du coté de ExcelApplication. Je connais pas, mais je vais creuser un peu. Je reviendrai peut etre reposer une ou deux questions

  6. #6
    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,
    Citation Envoyé par birdyz
    mais je me retrouve avec 300 - 400 instances d'Excel ouvertes .
    Tu ne dois ouvrir qu'une seule instance du serveur et boucler sur le traitement des fichiers, ainsi le temps de traitement sera réduit.
    Concernant les paramètres de la méthode SaveAs, as-tu consulté la doc en ligne d'Excel ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 36
    Par défaut
    En fait, que je mette ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
          try
            vMSExcel := GetActiveOleObject('Excel.Application');
          except
            vMSExcel := CreateOleObject('Excel.Application');
            vMSExcel.Visible := true;
          end;
    dans la boucle, ou avanrt la boucle, ca ne change rien, il m'ouvre Excel plusieurs fois. En fin, Excel n'est ouvert qu'une fois, mais apparait dans la barre des tache avec le chiffre 400 car les 400 fichiers sont ouverts. Et comme je n'arrive pas a les refermer !!!
    Mais pour finir, l'exe ne servira a priori plus jamais, donc je vais pas me cassé la tête avec, j'ai d'autre choses à faire

    Birdyz.

    PS : Je fait quoi du topic. Délestage ?

Discussions similaires

  1. Fermer fenêtre apres ouverture d'un jar par un batch
    Par Benduroy dans le forum Général Java
    Réponses: 2
    Dernier message: 01/12/2011, 23h26
  2. fermer excel après utilisation dans webbrowser
    Par salihovic dans le forum Windows Forms
    Réponses: 3
    Dernier message: 04/06/2008, 09h29
  3. Fermer page HTML apres ouverture
    Par bcd_30 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 19/02/2008, 10h40
  4. [Excel] Executer macro après ouverture
    Par DMboup dans le forum Access
    Réponses: 3
    Dernier message: 25/12/2006, 19h35
  5. Ouverture excel après exportation
    Par Yves2507 dans le forum Access
    Réponses: 11
    Dernier message: 09/09/2006, 15h25

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