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 le pilotage d'Excel


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 112
    Par défaut Problème avec le pilotage d'Excel
    Bonjour,
    je suis en train de faire une DLL qui sera utilisée en DarkBasic pour piloter un fichier Excel dans un programme 3D.
    Mais j'ai de gros problème à la compilation et plus j'en resout et plus y'en a...
    Donc voici mon code entier :

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    //---------------------------------------------------------------------------
    #include <utilcls.h>
    #include <windows.h>
    #include "Unit1.h"
     
    #pragma argsused
    int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
    {
            return 1;
    }
     
    Unit1::Unit1()
    {
    }
     
    void __declspec (dllexport) Unit1::openExcel()
    {
        vMSExcel = Variant::CreateObject("Excel.Application");
        vMSExcel.OlePropertySet("Visible", false);
    }
     
    void __declspec (dllexport) Unit1::closeExcel()
    {
        vMSExcel.OleFunction("Quit");
        vMSExcel = 0;
    }
     
    void __declspec (dllexport) Unit1::openFile(char *nomFichier)
    {
        vFileName = nomFichier;
        vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
        vXLWorkbook = vXLWorkbooks.OleFunction("Open", vFileName);
    }
     
    void __declspec (dllexport) Unit1::closeFile()
    {
     
     
        vSaveChanges = true;
        vXLWorkbook.OleFunction("Close", vSaveChanges, vFileName);
    }
     
    void __declspec (dllexport) Unit1::openFeuille(char *feuilleName)
    {
        vSheetName = feuilleName;
        vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets",vSheetName);
    }
     
    AnsiString __declspec (dllexport) Unit1::getValueCell(char *cellName)
    {
        vRange = cellName;
        vCell = vWorksheet.OlePropertyGet("Range", vRange);
        aValue = vCell.OlePropertyGet("Value");
     
        return (aValue);
    }
    //---------------------------------------------------------------------------
    et le .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
     
    #include <system.hpp>
    #include <utilcls.h>
    #include <windows.h>
    #ifdef __DLL__
    #define IMPORT_EXPORT __declspec(dllexport)
    #else
    #define IMPORT_EXPORT __declspec(dllimport)
    #endif
     
     
    IMPORT_EXPORT class Unit1 {
        public:
            int N1, N2, Result;
            Variant vMSExcel, vFileName, vXLWorkbooks, vXLWorkbook, vSaveChanges, vWorksheet, vSheetName, vValue, vRange, vCell;
            AnsiString aValue;
            Unit1();
            void __declspec (dllexport) openExcel();
            void __declspec (dllexport) closeExcel();
            void __declspec (dllexport) openFile(char *nomFichier);
            void __declspec (dllexport) closeFile();
            void __declspec (dllexport) openFeuille(char *feuilleName);
            AnsiString __declspec (dllexport) getValueCell(char *cellName);
    };
    et voici les erreurs qu'il me trouve :


    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
    [C++ Error] utilcls.h(3390): E2451 Undefined symbol 'Count'
    [C++ Error] sysvari.h(2669): E2450 Undefined structure 'TAutoArgs<1>'
    [C++ Error] sysvari.h(2669): E2449 Size of 'args' is unknown or zero
    [C++ Error] sysvari.h(2669): E2450 Undefined structure 'TAutoArgs<1>'
    [C++ Error] sysvari.h(1950): E2450 Undefined structure 'TAutoArgs<1>'
    [C++ Error] sysvari.h(1950): E2449 Size of 'args' is unknown or zero
    [C++ Error] sysvari.h(1950): E2450 Undefined structure 'TAutoArgs<1>'
    [C++ Error] sysvari.h(1951): E2015 Ambiguity between 'TVariantT<tagVARIANT>::operator =(TVariantT<tagVARIANT>)' and 'TVariantT<tagVARIANT>::operator =(tagVARIANT *)'
    [C++ Error] utilcls.h(3390): E2451 Undefined symbol 'Count'
    [C++ Error] sysvari.h(1958): E2450 Undefined structure 'TAutoArgs<2>'
    [C++ Error] sysvari.h(1958): E2449 Size of 'args' is unknown or zero
    [C++ Error] sysvari.h(1958): E2450 Undefined structure 'TAutoArgs<2>'
    [C++ Error] sysvari.h(1959): E2015 Ambiguity between 'TVariantT<tagVARIANT>::operator =(TVariantT<tagVARIANT>)' and 'TVariantT<tagVARIANT>::operator =(tagVARIANT *)'
    [C++ Error] sysvari.h(1959): E2015 Ambiguity between 'TVariantT<tagVARIANT>::operator =(TVariantT<tagVARIANT>)' and 'TVariantT<tagVARIANT>::operator =(tagVARIANT *)'
    [C++ Error] sysvari.h(2562): E2450 Undefined structure 'TAutoArgs<1>'
    [C++ Error] sysvari.h(2562): E2449 Size of 'args' is unknown or zero
    [C++ Error] sysvari.h(2562): E2450 Undefined structure 'TAutoArgs<1>'
    [C++ Error] sysvari.h(2563): E2015 Ambiguity between 'TVariantT<tagVARIANT>::operator =(TVariantT<tagVARIANT>)' and 'TVariantT<tagVARIANT>::operator =(tagVARIANT *)'
    Ca fait vraiment longtemps que je galère dessus donc si quelqu'un a une solution ca serai vraiment sympa.

    C'est a cause du type Variant qu'il y'a des problème, peut-être qu'il ne peut pas être utilisé en global? Je ne sais pas vraiment, je suis pas un pro du C++ et je sais encore moins faire des DLL proprement...

    Merci d'avance pour votre aide, j'attend votre réponse avec impatience

  2. #2
    Membre expérimenté
    Avatar de Djob
    Inscrit en
    Août 2002
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 215
    Par défaut
    change l'entete du fichier cpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #include <utilcls.h>
    #include <windows.h>
    #include "Unit1.h"
    #pragma argsused

    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #include <vcl.h>
    #include <windows.h>
    #include "Unit1.h"
    #pragma argsused

    là dans un premier temps ,ça doit pouvoir compiler....

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 112
    Par défaut
    En fait je sais pas trop ce qu'est <utilcls.h> et <vcl.h> mais je m'étais inspiré du tuto de LFE et apparement utilcls.h est nécessaire pour utiliser les fonctions de pilotage d'excel.

    Enfin bon, je testerai ce soir ce que tu m'a dis et je te dirais si ca marche.
    Merci de ton aide.

  4. #4
    Membre expérimenté
    Avatar de Djob
    Inscrit en
    Août 2002
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 215
    Par défaut
    tout à fait d'accord.. mais quand tu fais un include dans le .h ,il est inutile de le remettre dans le cpp.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 41
    Par défaut
    Ca fait vraiment longtemps que je galère dessus donc si quelqu'un a une solution ca serai vraiment sympa.

    C'est a cause du type Variant qu'il y'a des problème, peut-être qu'il ne peut pas être utilisé en global? Je ne sais pas vraiment, je suis pas un pro du C++ et je sais encore moins faire des DLL proprement...

    Merci d'avance pour votre aide, j'attend votre réponse avec impatience
    j'ai eu un problème similaire avec le type variant, j'ai changé l'option de compilation en lui demandant de ne plus optimisé le code et ça a marché, va comprendre...

    ensuite en gratant un peu je me suis rendu compte qu'avec le type variant et les ansistring il y avait comme un petit problème.

  6. #6
    Membre expérimenté
    Avatar de Djob
    Inscrit en
    Août 2002
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 215
    Par défaut
    evidemment si la vcl (vcl.h) n'est pas definie (#include ) ansistring ne peut etre reconnue....

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 112
    Par défaut
    Merci pour vos réponses, ca compile sans problème maintenant.
    Manque plus qu'a faire les tests dans mon appli.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 28/12/2007, 09h56
  2. problème avec formule "datedif" dans excel
    Par ajc35000 dans le forum Excel
    Réponses: 7
    Dernier message: 27/05/2007, 18h11
  3. [JXL] Problème avec création de feuille excel
    Par mittim dans le forum Documents
    Réponses: 2
    Dernier message: 10/08/2006, 15h40
  4. [C#] atteindre le format de cellule avec le pilotage d'EXCEL
    Par cortex024 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 19/04/2006, 09h32
  5. [VB.NET] Problème avec un OptionButton dans Excel 2003
    Par alfprod dans le forum Windows Forms
    Réponses: 3
    Dernier message: 09/09/2004, 13h40

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