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++Builder Discussion :

Problème avec OleExcel | Utilcls.h


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 49
    Points : 21
    Points
    21
    Par défaut Problème avec OleExcel | Utilcls.h
    Bonjour,


    Je suis confronté à un gros problème lorsque que j'essaye ceci avec excel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #include <utilcls.h>
    Variant vMSExcel;
    vMSExcel = Variant::CreateObject("Excel.Application");
    vMSExcel.OlePropertySet("Visible", true);

    Lors de la compilation une erreur m'est rendue :

    Construction
    [C++ Erreur] utilcls.h(3390): E2451 Symbole 'Count' non défini
    [C++ Erreur] sysvari.h(2669): E2450 Structure 'TAutoArgs<1>' non définie
    [C++ Erreur] sysvari.h(2669): E2449 La taille de 'args' est inconnue ou zéro
    [C++ Erreur] sysvari.h(2669): E2450 Structure 'TAutoArgs<1>' non définie

    La ligne 3390 faisant référence avec la ligne : VARIANTOBJ m_Array[Count+1];

    La ligne 2669 faisant référence avec la ligne : TAutoArgs<1> args;



    Je ne comprends pas, c'est un pur copié collé de la faq et il y a quelquechose qui cloche avec le utilcls.h il me semble...

    Recherché sur google mais pas de résultat ...


    Est ce que quelqu'un à une idée ?


    Merci

  2. #2
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Salut madnux:
    Un tutoriel sur le site a lire avant tout, apres il y a la FAQ.
    A+
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 49
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par blondelle
    Salut madnux:
    Un tutoriel sur le site a lire avant tout, apres il y a la FAQ.

    A+


    Salut Blondelle, merci. En fait, ce que je voulais dire c'est que le code est un pur copié collé du tutoriel mais je ne comprends pas pourquoi c++ Builder 6 me sort une erreur avec l'utilcls.h

    Aurais-je oublié quelquechose ? ( Ou mal lu ? ;-) )

  4. #4
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Alors une facon disons standard d'ouvrir Excel sans charger de fichier.
    Le code:
    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 <utilcls.h> // a ne pas oublier d'inclure
     
    // ne pas oublier de declarer
    Variant vMSExcel, vXLWorkbooks, vXLWorkbook, vWorksheets, vWorksheet;
     
            try
            {
    vMSExcel = Variant::GetActiveObject("Excel.Application"); // Capture d'une instance existante d'Excel
            }
            // Si Excel n'est pas déjà ouvert, une exception est levée ...
            catch(...)
            {
    vMSExcel = Variant::CreateObject("Excel.Application"); // Si Excel n'est pas lancé, on l'exécute
            }
    // on rend visible Excel
    vMSExcel.OlePropertySet("Visible", true);
    // on ouvre un classeur vide
    vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
     
            // nouveau classeur
     
    vXLWorkbook = vXLWorkbooks.OleFunction("Add");
            // on se positionne sur la 1ère feuille
    vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets",1);
    le try/catch sert a savoir si Excel est deja ouvert, si oui on l'active, sinon on le charge en mode pas a pas l'exeption est affichee (ceci est normal) relancer par Run et continuer ses testes.
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 49
    Points : 21
    Points
    21
    Par défaut
    Oui je comprend mais il me dit à chaque fois :


    Construction
    [C++ Erreur] utilcls.h(3390): E2451 Symbole 'Count' non défini
    [C++ Erreur] sysvari.h(2669): E2450 Structure 'TAutoArgs<1>' non définie
    [C++ Erreur] sysvari.h(2669): E2449 La taille de 'args' est inconnue ou zéro
    [C++ Erreur] sysvari.h(2669): E2450 Structure 'TAutoArgs<1>' non définie
    [C++ Erreur] sysvari.h(2562): E2450 Structure 'TAutoArgs<1>' non définie
    [C++ Erreur] sysvari.h(2562): E2449 La taille de 'args' est inconnue ou zéro
    [C++ Erreur] sysvari.h(2562): E2450 Structure 'TAutoArgs<1>' non définie


    C'est ça que je comprends pas pourquoi ...

  6. #6
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    meme en essayant le code que je t'ai passe?
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 49
    Points : 21
    Points
    21
    Par défaut
    Oui tout à fait... toujours la même erreur quelque soit les codes ...

  8. #8
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Peu tu faire un copier/coller de tout ton .cpp (avec les entetes) et de tout ton .h (avec les entetes) pour voir comment c'est ecrit
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 49
    Points : 21
    Points
    21
    Par défaut
    Oui bien sûr,


    Voici le .cpp :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    //---------------------------------------------------------------------------
    #include <utilcls.h>
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
     
    Variant vMSExcel, vXLWorkbooks, vXLWorkbook, vWorksheets, vWorksheet;
     
            try
            {
    vMSExcel = Variant::GetActiveObject("Excel.Application"); // Capture d'une instance existante d'Excel
            }
            // Si Excel n'est pas déjà ouvert, une exception est levée ...
            catch(...)
            {
    vMSExcel = Variant::CreateObject("Excel.Application"); // Si Excel n'est pas lancé, on l'exécute
            }
    // on rend visible Excel
    vMSExcel.OlePropertySet("Visible", true);
    // on ouvre un classeur vide
    vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
     
            // nouveau classeur
     
    vXLWorkbook = vXLWorkbooks.OleFunction("Add");
            // on se positionne sur la 1ère feuille
    vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets",1);
     
    }
    //---------------------------------------------------------------------------
    Et voici l'unit1.h


    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
     
    //---------------------------------------------------------------------------
     
    #ifndef Unit1H
    #define Unit1H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// Composants gérés par l'EDI
            TButton *Button1;
            void __fastcall Button1Click(TObject *Sender);
    private:	// Déclarations de l'utilisateur
    public:		// Déclarations de l'utilisateur
            __fastcall TForm1(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif

    Je présume que tu as l'utilcls.h donc je ne l'ai pas posté car il est assez long ;-) Mais si besoin s'en fait sentir je le ferrai !



    Merci

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 376
    Points
    376
    Par défaut
    Quelle version de C++ Builder as tu ? J'avais le même genre de problèmes en version 4.

    Essaie aussi d'ajouter:

    avant l'include de <utilcls.h>

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 49
    Points : 21
    Points
    21
    Par défaut
    J'ai la version c++ builder 6

    J'ai essayé ce que tu as dit et celà fonctionne maintenant ! Ouf je peux continuer de bosser sur mon projet



    Merci !

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

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  3. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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