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 :

Pilotage d'une macro excel depuis builder ?


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2008
    Messages
    3
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 3
    Par d�faut Pilotage d'une macro excel depuis builder ?
    Bonjour � tous ...
    Voila, je bute sur un bout de code pourtant tout simple qui me permettrait de lancer une macro stock� sur un fichier texte pour un doc excel :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Variant VBComp;
     
      // installation du composant
      VBComp = XLWorkbook.OlePropertyGet("VBProject").OlePropertyGet("VBComponents");
      VBComp.OleProcedure("Import", as_Fichier);
      // execution macro
      XL_Workbooks.OleProcedure("Run", "traduction");
      // destruction macro
      VBComp.OleFunction("Remove", VBComp.OleFunction("Item", "Module1"));
    Ce code doit lancer une macro excel contenu dans un txt (as_Fichier) hors le programme plante d�s la premi�re ligne en m'annon�ant fi�rement qu'une exception s'est produite ...
    Tous mes Variant sont d�clar� en priv� sous ma classe :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      private:
        // Variables de manipulation    
        Variant vLink;
        Variant vReadOnly;
        Variant vNomFeuille;
        Variant XL,XL_Workbooks,XLWorkbook,XL_Worksheet;
        Variant vFileName,vSheetName,vRange,vCell;
        Variant vWsName;
    Si quelqu'un � une id�e de r�solution ou un bout de code faisant la m�me chose, je suis preneur

  2. #2
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    21
    D�tails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Par d�faut
    Bonjour,

    si je ne me trompe pas, il faut lancer Excel ou r�cup�rer un instance avant ton code.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Variant vMSExcel;
    try {
        vMSExcel = Variant::GetActiveObject("Excel.Application");
    } catch(...) {
        vMSExcel = Variant::CreateObject("Excel.Application");
    }
    XLWorkbook = vMSExcel.OlePropertyGet("Workbooks").OleFunction("Add");

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2008
    Messages
    3
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 3
    Par d�faut
    En fait, je pilote Excel avant cette portion de code

    J'ouvre le documents, je lis des cellules, etc ....

    Ma variable XLWorkbook est donc bien initialis�e.

    Merci de ta r�ponse

  4. #4
    Candidat au Club
    Inscrit en
    Juillet 2008
    Messages
    3
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 3
    Par d�faut
    Je reposte un bout de code autonome fait pour tester le lancement de macro avec ouverture du fichier excel et simplification � l'extr�me :

    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
    #include <ComObj.hpp>
    #include <io.h>
    #include "Class_Excel.h"
     
    Variant XL_Classeur, XL_TousClasseurs;
    Variant XL_Excel, XL_Instance;
    Variant vFileName;
    Variant vComposant;
     
    //ouverture d'excel
    XL_Instance = CreateOleObject("Excel.Application");
    XL_Instance.OlePropertySet("Visible",false);
    XL_TousClasseurs = XL_Instance.OlePropertyGet("Workbooks");
    //recupere le nom du fichier
    vFileName = "D:\\Simulateur SEPT\\Exe\\BDV\\BDV_SEPT.xls";
    //ouverture du fichier
    XL_Classeur = XL_TousClasseurs.OleFunction("Open", vFileName);
     
    // installation du Module
    vComposant = XL_Classeur.OlePropertyGet("VBProject").OlePropertyGet("VBComponents");
    vComposant.OleProcedure("Import", "D:\\Simulateur SEPT\\Exe\\BDV\\traduction.mac");
    // execution de la macro
    XL_Instance.OleProcedure("Run", "traduction");
    // destruction de la macro
    vComposant.OleFunction("Remove", vComposant.OleFunction("Item", "Module1"));
    // à partir d'ici il n'y a plus de macro n'y Module
    Le programme plante sur la ligne : vComposant = XL_Classeur.OlePropertyGet("VBProject").OlePropertyGet("VBComponents"); avec le message assez vague : "EOleSysError -> une exception s'est produite" ...
    Je pense avoir suivi la FAQ du site ...

    Si quelqu'un � une petite id�e ???

Discussions similaires

  1. [Manipulation Excel] Executer une macro Excel depuis Access
    Par sebastien_oasis dans le forum VBA Access
    R�ponses: 2
    Dernier message: 30/05/2007, 15h21
  2. Piloter une macro/Excel depuis une application VB
    Par pjbou dans le forum Windows Forms
    R�ponses: 1
    Dernier message: 24/04/2007, 16h01
  3. lancer une macro excel depuis une appli access
    Par LostIN dans le forum Access
    R�ponses: 1
    Dernier message: 22/08/2006, 11h10
  4. Lancer une macro Excel depuis Access
    Par pascal913 dans le forum Access
    R�ponses: 12
    Dernier message: 31/07/2006, 15h31
  5. Lancer une macro Excel depuis Access
    Par marcobosio dans le forum Access
    R�ponses: 6
    Dernier message: 05/06/2006, 20h51

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