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 pilotage OLE : erreur sur <utilcls.h>


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut Problème pilotage OLE : erreur sur <utilcls.h>
    Bonjour,

    Je suis débutant dans le pilotage OLE, et on peut dire aussi dans le C++, et je n'ai pas une formation de programmeur...

    Voilà, j'ai bien lu le tutoriel sur le pilotage OLE, je me suis renseigné sur les forums, mais je ne trouve pas de solution à mon problème. Alors que j'ai vu dans les forums, quasiment le même code que moi (à savoir le code du tutoriel pour tester). Seulement C++ builder me remonte des erreurs comme :

    • utilcls.h(3390);E2451 Symobole 'count' non défini

    • Office_2k.h(8348);E2450 Structure 'TautoArgs<1>' non définie

    • Office_2k.h(8348);E2450 La taille de '_args' est inconnue ou zéro


    Voilà, j'ai lu des histoires de .ddl dans les forum, je ne sais pas si ça vient de là ou si j'ai oublié de déclarer quelque chose dans le code. Comme je vous l'ai dit, je ne m'y connais pas!
    Merci d'avance!

    ps : J'ai C++ builder6

  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
    Par défaut
    Salut Pymousse:
    Si tu utilise Ole tu n'a pas besoin de Office_2k.
    Maintenant comme les erreurs Ole sont intraduisible sans code c'est indepannable

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut
    Le code que j'ai mis en place est un code pour tester l'OLE :

    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
     
    #include <utilcls.h>
    #include <system.hpp>
     
    main()
    {
     
    Variant vMSExcel;
    Variant vXLWorkbook, vXLWorkbooks;
    Variant vFileName;
    Variant vSaveChanges;
    Variant vValue, vRange, vCell;
    Variant vWorksheet;
     
    vMSExcel = Variant::CreateObject("Excel.Application");
    vMSExcel.OlePropertySet("Visible", true);
     
     
    vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
    vXLWorkbook = vXLWorkbooks.OleFunction("Add");
     
     
    vFileName = "C:\\Program Files\\Borland\\CBuilder6\\Projects\\Lecture fichier\\Compilation\\synoptique.xls";
    vXLWorkbook.OleProcedure("Saveas", vFileName);
     
     
    vRange = "D3";
    vCell = vWorksheet.OlePropertyGet("Range", vRange);
    vValue = "test";
    vCell.OlePropertySet("Value", vValue);
     
     
    vSaveChanges = true;
    vFileName = "C:\\Program Files\\Borland\\CBuilder6\\Projects\\Lecture fichier\\Compilation\\synoptique.xls";
    vXLWorkbook.OleFunction("Close", vSaveChanges, vFileName);
     
    vMSExcel.OleFunction("Quit");
    vMSExcel = Unassigned;
    }
    Merci pour la réponse sur Office_2k.

  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
    Par défaut
    Voici le code remanie, une Form trois boutons un edit
    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 <vcl.h>
    #pragma hdrstop
    #include <utilcls.h>
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma link "ColorBtn"
    #pragma resource "*.dfm"
    TForm1 *Form1;
    // les Variants doiven etre declares dans le .h
    // ils ne sont place la que par comodite pour le test
    Variant vMSExcel;
    Variant vXLWorkbook, vXLWorkbooks;
    Variant vFileName;
    Variant vSaveChanges;
    Variant vValue, vRange, vCell;
    Variant vWorksheet;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    vMSExcel = Variant::CreateObject("Excel.Application");
    vMSExcel.OlePropertySet("Visible", true);
     
    vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
    vXLWorkbook = vXLWorkbooks.OleFunction("Add");
     
    vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets", 1);
    // on selectionne la Feuil1
    vWorksheet.OleProcedure("Select");
    // pour lire dans une cellule
    // ("Cells", ligne, colonne)
    vCell = vWorksheet.OlePropertyGet("Cells", 3, 2);
    vCell.OlePropertySet("Value", "toto");
    // on recupere le contenu de la cellule
    vValue = vCell.OlePropertyGet("Value");
    Edit1->Text = vValue;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    vFileName = "C:\\Classeur4.xls";
    vXLWorkbook.OleProcedure("Saveas", vFileName);
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button3Click(TObject *Sender)
    {
    vMSExcel.OleFunction("Quit");
    vMSExcel = Unassigned;
    }
    //---------------------------------------------------------------------------
    main() n'a pas cour avec BCB, #include <system.hpp> n'est pas utile ici
    Je te conseille d'avoir une programmation un peu moins brouillon surtout avec Ole, car tu va tres vite etre submerge par les erreurs

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut
    Merci Blondelle,

    Mon programme initial récupère des données de fichiers textes et je voudrais les mettres au format excel.
    Est-ce qu'il est nécessaire d'utiliser les TForm? Car je n'en n'utilise pas dans mon programme.
    J'espère ne pas trop saouler mais j'ai une erreur de syntaxe de déclaration sur le TForm1 :

    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 <vcl.h>
    #pragma hdrstop
    #include <utilcls.h>
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma link "ColorBtn"
    #pragma resource "*.dfm"
    TForm1 *Form1; //erreur de syntaxe de declaration a cette endroit
     
    // les Variants doiven etre declares dans le .h
    // ils ne sont place la que par comodite pour le test
    Variant vMSExcel;
    Variant vXLWorkbook, vXLWorkbooks;
    Variant vFileName;
    Variant vSaveChanges;
    Variant vValue, vRange, vCell;
    Variant vWorksheet;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    vMSExcel = Variant::CreateObject("Excel.Application");
    vMSExcel.OlePropertySet("Visible", true);
     
    vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
    vXLWorkbook = vXLWorkbooks.OleFunction("Add");
     
    vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets", 1);
    // on selectionne la Feuil1
    vWorksheet.OleProcedure("Select");
    // pour lire dans une cellule
    // ("Cells", ligne, colonne)
    vCell = vWorksheet.OlePropertyGet("Cells", 3, 2);
    vCell.OlePropertySet("Value", "toto");
    // on recupere le contenu de la cellule
    vValue = vCell.OlePropertyGet("Value");
    Edit1->Text = vValue;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    vFileName = "C:\\Classeur4.xls";
    vXLWorkbook.OleProcedure("Saveas", vFileName);
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button3Click(TObject *Sender)
    {
    vMSExcel.OleFunction("Quit");
    vMSExcel = Unassigned;
    }
    //---------------------------------------------------------------------------
    Je suis désolé, j'ai une formation d'electrotechnicien à la base. Je vais essayer de rendre plus lisible mon code. .
    Merci de te donner du mal Blondelle, c'est gentil.

  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
    Par défaut
    La Form c'est la fenetre sur laquelle tu place tes composants.
    Pour l'exemple que je t'ai passe c'est une copie complete de la page Unit1.cpp, l'entete ci dessous ne doit pas se retrouver en double dans ton programme
    //---------------------------------------------------------------------------

    #include <vcl.h>
    #pragma hdrstop

    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1; //erreur de syntaxe de declaration a cette endroit
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
    {
    }

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

Discussions similaires

  1. [2.x] Problème 'affichage d'erreur sur champ Date non valide
    Par charliejo dans le forum Symfony
    Réponses: 3
    Dernier message: 21/03/2015, 13h50
  2. Réponses: 7
    Dernier message: 31/03/2008, 14h31
  3. Problème de message d'erreur sur une fonction SNMP
    Par kriptoo dans le forum Langage
    Réponses: 1
    Dernier message: 18/05/2007, 01h08
  4. Problème avec l'erreur 3464 sur access
    Par somalien10 dans le forum Access
    Réponses: 10
    Dernier message: 16/05/2006, 09h30
  5. Problème message d'erreur et action sur clic
    Par rangernoir dans le forum Access
    Réponses: 5
    Dernier message: 26/09/2005, 12h10

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