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 :

OLE Excel, pointer vers le classeur ouvert


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �prouv�
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifi�)
    Inscrit en
    D�cembre 2004
    Messages
    2 059
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activit� : OPNI (Objet Programmant Non Identifi�)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 2 059
    Par d�faut OLE Excel, pointer vers le classeur ouvert
    Bonjour,

    D�cidement, je suis un vrai blaireau avec ce genre de choses et je n'arrive a rien avec OLE Excel:

    J'ai besoin de 'pointer' vers un classeur Excel ouvert, dont je r�cup�re le nom grace a la fonction API GetWindowText (je passe les d�tails).
    J'ai donc trouv� dans la FAQ:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    //pour l'instance d'excel
    vMSExcel = Variant::GetActiveObject("Excel.Application");
    //pour les classeurs ouverts
    vXLWorkbooks = vMSExcel.OlePropertyGet("WorkBooks");
    Mais comment fais je pour pointer vers celui dont je peut trouver le nom via GetWindowText ?
    De plus, j'ai besoin ensuite de pointer vers la feuille active de mani�re 'g�n�rique', puis je esp�rer faire quelquechose comme:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    vXLWorkSheet = vXLWorkbook.OlePropertyGet("ActiveSheet");
    ?

    Merci d'avance,

  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 Sunchaser:
    Alors je vais jouer le Mec qui en ajoute une couche mais c'est tres facile
    Je te passe le code pour ouvrir un fichier Excel, le sauvegarder, quitter
    Declarer un public " Variant vMSExcel, vFileName, vXLWorkbooks, vXLWorkbook, vWorksheet; "
    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
     
    // ne pas oublier d'inclure " #include <utilcls.h> "
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    try
     {
        vMSExcel = Variant::GetActiveObject("Excel.Application");
    }
     catch(...)
     {
        vMSExcel = Variant::CreateObject("Excel.Application");
    }
    vMSExcel.OlePropertySet("Visible", true);
    vFileName = "C:\\Documents and Settings\\blondelle\\Mes documents\\Nouveau dossier\\path1\\path1.csv";
    vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
    vXLWorkbook = vXLWorkbooks.OleFunction("Open", vFileName);
    // ici le fichier path1.csv est charge
    vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets", 1);
    // ici on a le fichier charge dans Excel et la Feuill1 est active
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    vMSExcel.OleFunction("Quit");
    vMSExcel = Unassigned;        
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button3Click(TObject *Sender)
    {
    vFileName = "File.xls";
    vXLWorkbook.OleProcedure("Saveas", vFileName);        
    }
    //---------------------------------------------------------------------------
    Facile non

  3. #3
    Membre �prouv�
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifi�)
    Inscrit en
    D�cembre 2004
    Messages
    2 059
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activit� : OPNI (Objet Programmant Non Identifi�)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 2 059
    Par d�faut
    Bonsoir,

    Merci Blondelle, et je vais jouer au type qui en rajoute une couche moi aussi:
    "Heu...je vois po comment ca va m'aider ca..."

    En fait, pour r�sumer, imagines que:
    . je n'ai pas le moyen de savoir combien de classeurs Excel sont ouvert
    . je veux 'pointer' vers un classeur dont je ne connais pas le nom (et qui peut s'appeller comme il veut celui la, je m'en fou) mais je sais qu'il vient d'�tre selectionn� avec la souris, et je peut obtenir tout un tas d'info dessus gr�ce aux API (en commencant par WindowFromPoint(), GetWindowText, etc).
    Malgr� la 'toute puissance' (en g�n�ral) des API, j'ai besoin de passer par OLE Excel puisque je veux acceder a l'objet 'Cell'.

    Donc dans mon cas, je ne pense pas pouvoir faire un "open" puisque - c'est sur - le fichier est ouvert et aussi je n'ai pas le filename (a priori ...)


    Voili ...

  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
    Je ne comprend pas trop ce que tu veu faire mais si il est selectionne par la souris il apparait a l'ecran, si il est visible.
    Tu voudrais utiliser Ole juste pour intervenir sur le classeur mais pas pour l'ouvrir

  5. #5
    Membre �prouv�
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifi�)
    Inscrit en
    D�cembre 2004
    Messages
    2 059
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activit� : OPNI (Objet Programmant Non Identifi�)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 2 059
    Par d�faut
    Citation Envoy� par blondelle
    Je ne comprend pas trop ce que tu veu faire
    moi non plus ... lol

    Tu voudrais utiliser Ole juste pour intervenir sur le classeur mais pas pour l'ouvrir
    Voui ... tout a fait.
    Mais je te promets que si j'y arrive, tu comprendras tr�s vite en fait ce que je cherchais a faire, et pis ... non seulement je te remercierais mille fois, mais en plus je saturerais les MP des forumeurs avec des �loges te concernant !

  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
    Pour to probleme il serait interressant de savoir ce que passe " vMSExcel " dans les fonctions du try catch
    vMSExcel = Variant::GetActiveObject("Excel.Application");

    vMSExcel = Variant::CreateObject("Excel.Application");
    J'ai fais quelques essais mais je ne suis pas parvenu a recupere la valeur d'un Variant.
    L'idee c'est de recupere l'instance du fichier ouvert par l'api et de le passer dans " vMSExcel "
    Si besoin est je sais recupere le Handle d'une fenetre

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

Discussions similaires

  1. Extraire une feuille d'un classeur ferm� vers un classeur ouvert
    Par Kutoh dans le forum Macros et VBA Excel
    R�ponses: 5
    Dernier message: 01/08/2013, 11h23
  2. Copier des donn�es de classeurs Excel ferm�s vers un classeur ouvert
    Par gwen-al dans le forum Macros et VBA Excel
    R�ponses: 16
    Dernier message: 11/03/2008, 17h00
  3. Exportation requ�te vers Excel dans un classeur ouvert
    Par sophiesallee dans le forum Requ�tes et SQL.
    R�ponses: 3
    Dernier message: 03/09/2007, 14h54
  4. lien vers un classeur excel
    Par maketossss dans le forum G�n�ral JavaScript
    R�ponses: 6
    Dernier message: 20/01/2006, 11h46
  5. [Excel] Commentavoir si un classeur est d�j� ouvert ?
    Par Henkyl dans le forum API, COM et SDKs
    R�ponses: 6
    Dernier message: 14/05/2004, 11h27

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