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 :

Plantage Excel avec le pilotage depuis C++ Builder


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
    Décembre 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 56
    Par défaut Plantage Excel avec le pilotage depuis C++ Builder
    Je m'essaye à la modification de fichier xls depuis C++ Builder et j'ai donc suivis le tuto du site

    Mais je dois oublier quelque chose car j'obtiens a chaque execution une fenetre Windows qui m'annonce qu'excel a rencontrer un probleme et doit fermer.

    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
    void main()
    {
            int i;
     
            CoInitialize(0); // sans cela j'obtiens une erreur
     
            Variant vMSExcel;
     
            vMSExcel = Variant::CreateObject("Excel.Application");
     
            vMSExcel.OlePropertySet("Visible", false);
     
            Variant vFileName, vXLWorkbooks, vXLWorkbook, vWorksheet, vSheetName, vValue, vRange, vCell,vSaveChanges;
     
            vFileName = "C:\\test.xls";
            vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
            vXLWorkbook = vXLWorkbooks.OleFunction("Open", vFileName);
     
            vSheetName = "Feuil1";
            vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets",vSheetName);
            cin>>txt;
     
            AnsiString aValue;
     
            vRange = "A1";
            vCell = vWorksheet.OlePropertyGet("Range", vRange);
            aValue = vCell.OlePropertyGet("Value");
     
            cout<<aValue;
     
     
     
            cin>>i;
    }
    Je suis sur une application console.

  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 Jidewe:
    Je pense que ton erreur est la
    vSheetName = "Feuil1";
    vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets",vSheetName);
    Tu met juste
    vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets",1);
    Tu ne donne un nom que si c'est different de "Feuil1"...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 56
    Par défaut
    non c'est pas ça

    Pourrais tu me donner un en-tête standard stp? Avec des includes necessaires, peut etre que j'en oublie certains...

  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
    Un lien sur un Tuto.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 56
    Par défaut
    Oui oui déja lu ^^ Si tu regarde bien mon code c'est exactement le tuto Mais je n'arrive pas a le faire fonctionner!

  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
    Je fais la meme chose que toi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Variant vMSExcel, vXLWorkbooks, vXLWorkbook, vWorksheet;
    Variant vWorksheets;
    vMSExcel = Variant::CreateObject("Excel.Application");
    vMSExcel.OlePropertySet("Visible", true);
    Variant vFileName, vNotUsed;
    vNotUsed = Unassigned;
    vFileName = "C:\\test_Word";
    vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
    vXLWorkbook = vXLWorkbooks.OleFunction("Open", vFileName, vNotUsed,
    vNotUsed, vNotUsed);
    vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets", 1);
    Il y a aussi la FAQ

  7. #7
    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
    Ton code fonctionne chez moi, mais j'utilise les composants, j'ai donc mis en commentaires ce qui ne fonctionne pas avec les composants.
    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
     
    // ne pas oublier #include <utilcls.h>
            int i;
            OleInitialize(0); // sans cela j'obtiens une erreur
            Variant vMSExcel;
            vMSExcel = Variant::CreateObject("Excel.Application");
            vMSExcel.OlePropertySet("Visible", true);
            Variant vFileName, vXLWorkbooks, vXLWorkbook, vWorksheet, vSheetName, vValue, vRange, vCell,vSaveChanges;
            vFileName = "C:\\test.xls";
            vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
            vXLWorkbook = vXLWorkbooks.OleFunction("Open", vFileName);
    //        vSheetName = "Feuil1";
            vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets",1);
    //        cin>>txt;
    //        AnsiString aValue;
      Variant aValue;
            vRange = "A1";
            vCell = vWorksheet.OlePropertyGet("Range", vRange);
            aValue = vCell.OlePropertyGet("Value");
    //        cout<<aValue;
     
    //        cin>>i;

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

Discussions similaires

  1. [OL-2003] Fichier Excel avec Workbook_Open lancé depuis Outlook
    Par Trarc dans le forum VBA Outlook
    Réponses: 2
    Dernier message: 04/10/2010, 17h56
  2. [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
  3. Problème avec le pilotage d'Excel
    Par dedesite dans le forum C++Builder
    Réponses: 6
    Dernier message: 16/01/2006, 16h38
  4. sauver une picture en gif depuis excel avec Visual baisi
    Par cada01a dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 09/11/2005, 19h58
  5. Pb avec le pilotage OLE d'Excel
    Par psau dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/01/2005, 17h19

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