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 :

Procedure SaveAs Ole Excel


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre � l'essai
    Profil pro
    Inscrit en
    F�vrier 2009
    Messages
    5
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2009
    Messages : 5
    Par d�faut Procedure SaveAs Ole Excel
    Bonjour � tous,
    apr�s ouverture d'un classeur Excel (en C++ Builder 5), je tente de le sauvegarder au format CSV en utilisant la proc�dure OLE Saveas comme explicit�e dans la FAQ et dans le tutoriel "Pilotage OLE d'Excel ...".
    Durant l'execution, Borland me sort une erreur EOleSysError : nom inconnu. venant de sysvari.h (void Variant::OleProcedure(const String& name, P1 p1, P2 p2) )
    Voila l'extrait de mon source, si quelqu'un � une id�e ... je prends!

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Variant MSExcel = Variant::CreateObject("Excel.Application");
    MSExcel.OlePropertySet("Visible", false);
    MSExcel.OlePropertySet("DecimalSeparator", ".");
    MSExcel.OlePropertySet("UseSystemSeparators", false);
    Variant vFileName = StringToOleStr(OpenExcel->FileName);
    Variant Workbook = MSExcel.OlePropertyGet("Workbooks");
    Workbook.OleFunction("Open", vFileName);
    Variant Csv = "temp.csv";    // just for testing
    Workbook.OleProcedure("Saveas", Csv, 6);      // <--- C'est la que ça plante
    Workbook.OleFunction("Close");
    MSExcel.OleFunction("Quit");
    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
    Par d�faut
    Salut kerozan
    Un lien sur la Faq avec la fonction complete SaveAs

  3. #3
    Membre � l'essai
    Profil pro
    Inscrit en
    F�vrier 2009
    Messages
    5
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2009
    Messages : 5
    Par d�faut
    Salut Blondelle,
    merci pour le lien, mais je l'ai d�j� scrupt� avant d'exposer mon probl�me.
    J'ai aussi essay� en passant tous les Variant, mais rien � faire .. toujours cette d'erreur.
    A+ et n'abuse pas des Haribo (sympa Uzes !

  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
    n'abuse pas des Haribo
    Je ne fais jamais plus d'un abus a la fois
    Ton code n'est pas complet d'ou l'erreur
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Variant MSExcel = Variant::CreateObject("Excel.Application");
    MSExcel.OlePropertySet("Visible", false);
    MSExcel.OlePropertySet("DecimalSeparator", ".");
    MSExcel.OlePropertySet("UseSystemSeparators", false);
    //Variant vFileName = StringToOleStr(OpenExcel->FileName);
    Variant Workbooks = MSExcel.OlePropertyGet("Workbooks");
    Variant Workbook = Workbooks.OleFunction("Add");
    Variant vWorksheet = Workbook.OlePropertyGet("Worksheets", 1);
    //Workbook.OleFunction("Open", vFileName);
    Variant FiCsv = "c:\\temp.CSV";    // just for testing
    Workbook.OleProcedure("Saveas", WideString(FiCsv), 6);      // <--- C'est la que �a plante
    Workbook.OleFunction("Close");
    MSExcel.OleFunction("Quit");
    Je te laisse modifier j'ai passe au rouge ce que j'ai modifie

  5. #5
    Membre � l'essai
    Profil pro
    Inscrit en
    F�vrier 2009
    Messages
    5
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2009
    Messages : 5
    Par d�faut
    Merci Blondelle pour tes lumi�res !
    j'avais effectivement saut� une �tape.
    Par contre as tu une id�e pour faire plus simple, le but �tant de convertir le contenu d'un fichier xls s�lectionn� par un TOpenDialog en un fichier ascii (le format csv me conviens parfaitement) pour post traitement.
    J'avais opter pour l'ouverture d'excel en tache de fond (non visible), de charger le classeur au format xls puis de le sauver sous un nom bidon au format csv. Le probl�me est qu'une fenetre me demandant si je veux enregistrer les modifs de ce fichier bidon apparait alors que je souhaiterai qu'il n'y ai pas de confirmation � faire.
    Voila mon nouveau code corrig�:
    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
     
    if (OpenExcel->Execute())
       {
       Variant MSExcel = Variant::CreateObject("Excel.Application");
       MSExcel.OlePropertySet("Visible", false);
       MSExcel.OlePropertySet("DecimalSeparator", ".");
       MSExcel.OlePropertySet("UseSystemSeparators", false);
     
       //_____________________________ ouvre le classeur
       Variant vFileName = StringToOleStr(OpenExcel->FileName);
       Variant Workbooks = MSExcel.OlePropertyGet("Workbooks");
       Variant Workbook = Workbooks.OleFunction("Open", vFileName);
     
       //_____________________________ Sauve classeur au format cvs (ascii)
       AnsiString s = Path + "\\temp.csv";
       Variant CSV = StringToOleStr(s);
       Workbook.OleProcedure("Saveas", WideString(CSV), 6);
     
       //_____________________________ fermeture du classeur
       Workbook.OleFunction("Close");
     
       //_____________________________ fermeture d'excel
       MSExcel.OleFunction("Quit");
       }

  6. #6
    Membre � l'essai
    Profil pro
    Inscrit en
    F�vrier 2009
    Messages
    5
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2009
    Messages : 5
    Par d�faut
    Ne pas tenir compte du message pr�c�dent.
    J'ai ajout� la demande de d�sactivation des messages Excel de demande de confirmation par:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    MSExcel.OlePropertySet("DisplayAlerts", false);
    et �a marche.
    Merci encore pour le support !
    A+

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [OLE Excel] Aller jusqu'� la derni�re cellule rempli
    Par JBrek dans le forum API, COM et SDKs
    R�ponses: 9
    Dernier message: 07/08/2009, 19h21
  2. Petit prob avec l'OLE EXCELL sous builder
    Par vladi dans le forum C++Builder
    R�ponses: 2
    Dernier message: 10/03/2005, 19h30
  3. Manipulation d'un Objet OLE Excel ?
    Par NiKro75 dans le forum VBA Access
    R�ponses: 10
    Dernier message: 05/07/2004, 17h43
  4. [OLE Excel] R�cup�rer une colonne d'un coup
    Par Nemerle dans le forum C++Builder
    R�ponses: 2
    Dernier message: 17/05/2004, 15h56
  5. [OLE Excel] Erreur
    Par JBrek dans le forum API, COM et SDKs
    R�ponses: 9
    Dernier message: 23/03/2003, 18h28

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