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

C++ Discussion :

Commande OLE EXCEL : Fermeture de l'application


Sujet :

C++

  1. #1
    Membre actif
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 29
    Par défaut Commande OLE EXCEL : Fermeture de l'application
    Bonjour à toutes et à tous,
    Je réalise un projet sous Borland c++ Builder 6 dans lequel je pilote EXCEL avec les commandes OLE.
    J'ai 2 soucis.

    1er PB :

    Je n'arrive pas à encadrer un groupe de cellules, à chaque fois, j'ai un message d'erreur de la classe EOleSysError. Tout ce que je veux, c'est encadrer toutes les cellules de A2 à D8.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Variant vRange, vBorders,vCell101, vCell102, vValue,vWsRange, vLineStyle, vLineWeight ;
    vLineStyle="xlContinuous";
    vLineWeight="xlThick";
    vCell101="A2";
    vCell102="D8";
     
    vWsRange="A2:D8";
    vRange =vWorksheet.OlePropertyGet("Range", vWsRange);
    vRange.OleFunction("BorderAround", vLineStyle, vLineWeight);

    2eme PB :


    A la fin de la séquence, j'ai une boucle qui passe à 2 pour lancer la fermeture d'EXCEL et lancer une nouvelle feuille.
    ça fonctionne très bien, sauf que EXCEL ne se ferme pas vraiment. Quand je lance le gestionnaire de tâche, au bout d'un certain temps, j'ai de nombreuses occurences EXCEL.EXE. J'aimerais m'en débarasser à chaque fermeture du programme. J'ai essayé de tuer la tache avec 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
     
      HWND hWnd;
      DWORD processId;
      HANDLE hProcess;
      do  {
      hWnd = FindWindow(NULL,"EXCEL.EXE");
        if (hWnd){
        GetWindowThreadProcessId(hWnd,&processId);
        hProcess = OpenProcess(PROCESS_TERMINATE,false,processId);
          if (hProcess){
          TerminateProcess(hProcess,0);
          CloseHandle(hProcess);
          }
        }
      } while(hWnd);

    Sinon, mon programme ressemble à 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
    17
    18
    19
    20
    21
    22
    23
     
    if (boucle==2){
      Word annee, mois, jour;
      TDate date;
      date = Date();
      DecodeDate(date, annee, mois, jour);
      vChemin = "C:\\ils\\";
      extension = "xls";
        if(SelectionChaine->Text=="GLIDE"){
                baie = "GLIDE";
        } else  baie = "LOCALIZER";
     
     
      NomFichier=vChemin+baie+"."+annee+"."+mois+"."+jour+"."+extension;
      vFileName=StringToOleStr(NomFichier);
      vWorksheet.OleProcedure("saveas",vFileName);
      vMSExcel.OleFunction("Quit");
     
      vMSExcel = Variant::CreateObject("Excel.Application");
              vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
            vXLWorkbook = vXLWorkbooks.OleFunction("Add");
      boucle=0;
    }

    Merci pour le coups de main, je galère là dessus depuis plusieurs jours.

    PS : Soyez indulgent SVP car je n'ai pas la prétention de savoir coder, je n'en ai pas fait depuis 10 ans.

  2. #2
    Membre actif
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 29
    Par défaut Et un pb résolu
    Bonjour,
    Il m'arrive souvent de placer un problème sur un forum pour que la solution me sorte d'elle même.
    J'ai contourné le problème de la façon suivante :

    A l'ouverture de la forme,
    j'ouvre EXCEL
    Je crée un nouveau classeur

    A la fin de ma séquence,
    j'enregistre et ferme ce classeur
    j'ouvre un nouveau classeur

    A la fermeture du programme dans l’événement onClose :
    Je lance la commande Ole "quit"

    et là, ça fonctionne très bien.


    Il me reste toujours le problème d'encadrement de cellules..

    Merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD14] Excel:Masquer des colonnes par commande OLE
    Par pasla dans le forum WinDev
    Réponses: 2
    Dernier message: 25/02/2013, 17h38
  2. Documentation sur les commandes OLE pour Excel
    Par vanitom dans le forum MFC
    Réponses: 5
    Dernier message: 13/05/2009, 12h34
  3. Fermeture de l'application Excel
    Par casavba dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 01/12/2007, 16h57
  4. Fermeture d'une application Excel
    Par darkspoilt dans le forum VBA Access
    Réponses: 3
    Dernier message: 20/06/2007, 11h53
  5. [Excel] ouverture et fermeture d'une application
    Par Chewi dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/02/2007, 16h25

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