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

Langage Delphi Discussion :

TExcelApplication - Excel 2003


Sujet :

Langage Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 228
    Points : 117
    Points
    117
    Par défaut TExcelApplication - Excel 2003
    Bonjour,

    J'ai lu la faq delphi sur office.
    -Pour utiliser Word 2003 vous devez désinstaller le package courant d'Office puis importer la librairie de type suivante :
    C:\Program Files\Microsoft Office\OFFICE11\MSWORD.OLB.
    Pour excel, c'est quoi ? J'ai testé le fichier "...\Office11\Excel.exe", mais rien ne se produit.
    Même pour word, je n'y arrive pas. Je n'ai jamais les composants dans la palette.
    Merci pour votre aide.

  2. #2
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut Re: TExcelApplication - Excel 2003
    Citation Envoyé par Leesox
    Bonjour,

    J'ai lu la faq delphi sur office.
    -Pour utiliser Word 2003 vous devez désinstaller le package courant d'Office puis importer la librairie de type suivante :
    C:\Program Files\Microsoft Office\OFFICE11\MSWORD.OLB.
    Pour excel, c'est quoi ? J'ai testé le fichier "...\Office11\Excel.exe", mais rien ne se produit.
    Même pour word, je n'y arrive pas. Je n'ai jamais les composants dans la palette.
    Merci pour votre aide.
    Tu as testé Excel.exe alors que dans la FAQ c'est marqué un fichier .OLB ? Peut être l'erreur vient de la ? Essaye le fichier XL5FR32.OLB je ne sais pas si c'est ça, mais dans Office11, en .OLB il n'y a que ça qui me parait logique.

    Bon courage !

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 228
    Points : 117
    Points
    117
    Par défaut
    Merci à toi

    Lorsque j'importe un compsant de type bibliothèque dans delphi 2005, J'ai dans la liste Microsoft Excel 11.0 Object Library, c'est pour celà que j'ai tenté ce fichier.

    En .OLB, je n'ai que Msword, Msppt, Msoutl, Msacc !

    J'ai testé l'importation de ces fichiers, mais rien ne se passe, aucun composant n'est installé.

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Sous Delphi tu peux retrouver le fichier de librairie associé à Excel, menu importer un activeX je crois.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 228
    Points : 117
    Points
    117
    Par défaut
    Bonjour,

    J'ai bien l'impression que le fichier Excel.exe est la librairie en question.

    Lorsque je l'importe, j'ai une unité dans delphi qui s'appelle Excel_TLB.
    Si j'importe pour Word, le fichier Msword.olb j'ai une unité qui s'appelle Word_TLB.

    Mais je n'ai pas de composants visibles dans la palette.
    Que faire avec ces unités ?

    Laurent : dans importer ActiveX, je n'ai rien vu de spécifique à excel.

  6. #6
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Leesox
    Laurent : dans importer ActiveX, je n'ai rien vu de spécifique à excel.
    Exact, je confond souvent avec l'outil OleView.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 228
    Points : 117
    Points
    117
    Par défaut
    Bonjour,
    Je reviens sur mon post.

    J'ai un peu de mal à comprendre sur ce coup.

    Après importation de la bibliotèque de type dans delphi, je n'ai pas de composant dans la palette correspondant à Office 2003.
    J'ai donc à importer l'unité "Excel_TLB" à mon projet.

    Le projet compile bien mais lorsque je lance cette procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.Button1Click(Sender: TObject);
    var
      ExcelApplication1: TExcelApplication;
      MonClasseur : _workbook;
    begin
      MonClasseur:=ExcelApplication1.Workbooks.Add(xlWBATWorksheet,0);
    end;
    je me retrouve avec une exception EAccessViolation dans cette fonction
    function TExcelApplication.GetDefaultInterface: _Application;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    begin
      if FIntf = nil then //ici l'erreur
        Connect;
      Assert(FIntf <> nil, 'DefaultInterface is NULL. Component is not connected to Server. You must call ''Connect'' or ''ConnectTo'' before this operation');
      Result := FIntf;
    end;
    Que me manque t-il ?
    Merci

  8. #8
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    je serais tenté de dire qu'il faut d'abord se connecter au serveur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     ExcelApplication1.Connect;

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 228
    Points : 117
    Points
    117
    Par défaut
    Merci de ta réponse Laurent, mais j'ai maintenant un autre message d'erreur.

    Erreur EAssertionFailled ..... Défaultinterface is NUL. Component is not connected to Serveur. You must call 'Connect' or 'ConnectTo' before this operation ('C:\Program Files\Borland\BSD\Imports\Excel_TLB.pas, ligne 31068')


    L'erreur est dans la même fonction que ci-dessous et l'arrêt est sur la ligne en dessous du connect.

  10. #10
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Regardes le tuto indiqué dans la FAQ dans la rubrique MS-Office.

    Si tu utilises les composant Serveur il faut connecter les éléments :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ExcelApplication1.Connect
    ...
    ExcelWorkbook1.ConnectTo( ExcelApplication1.WorkBooks.Open(FileName,
    ...
    ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Sheets[nbSheet] as _WorkSheet);
    ...
    En fin d'appli c'est l'inverse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
       // Disconnect to the  worksheet
      ExcelWorksheet1.Disconnect;
     
        // Close and disconnect the WorkBook;
      ExcelApplication1.WorkBooks.Close(lcid);
      ExcelWorkbook1.Disconnect;
     
     ExcelApplication1.Disconnect
     ExcelApplication1.quit
    ...

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 228
    Points : 117
    Points
    117
    Par défaut
    Bonjour Laurent.

    J'avais bien vu ce chapitre
    http://delphi.developpez.com/faq/?pa...phi#excelexcel

    Le TExcelApplication.Connect m'avais échapé, mais je ne vois pas d'exemple ensuite avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ExcelWorkbook1.ConnectTo( ExcelApplication1.WorkBooks.Open(FileName,
    ...
    ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Sheets[nbSheet] as _WorkSheet);
    ...
    Bon, je te remercie et je regarderais tout çà lundi à mon travail, je n'ai pas office 2003 chez moi.

  12. #12
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    On utilise connect, connectTo avec les composants Serveurs, avec les variants ce n'est pas nécessaire.
    Il y a donc deux manières d'utiliser les serveurs OLEAutomation.

    http://laurent-dardenne.developpez.c.../eventscom/#L6

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 228
    Points : 117
    Points
    117
    Par défaut
    Bonjour,
    J'ai testé les connectTo, mais je me retrouve toujours avec mon message d'erreur "Erreur EAssertionFailled.........." comme ci-dessus.

    Je dois être nul
    Mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.Button1Click(Sender: TObject);
    var
      ExcelApplication1: TExcelApplication;
      ExcelWorkbook1: TExcelworkbook ;
      MonClasseur : _workbook;
    begin
      ExcelApplication1.Connect;
    ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(xlWBATWorksheet,0));
    end;
    Auriez-vous un exemple plus concret. Merci.

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Points : 73
    Points
    73
    Par défaut
    moi je fais comme ca:

    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
     
    use Variants
     
       ExcelApplication1: TExcelApplication;
       XlClasseur : _workbook;
       XlFeuille :_Worksheet;
     
       ExcelApplication1.Connect;
       XlClasseur:=ExcelApplication1.Workbooks.Open(ExcelFilename,False,False,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0);
       ExcelApplication1.Visible[0]:=true;
       XlFeuille:=XlClasseur.Worksheets['feuil1'] as _worksheet;
     
    XlClasseur.close(True,EmptyParam,EmptyParam,0);
    ExcelApplication1.Quit;
    ExcelApplication1.Disconnect;
    Ca devrait marcher.
    D'un autre coté j'ai un petit souci avec cette méthode c'est que dans mon gestionnaire de tache j'ai toujours un processus EXCEL qui tourne meme après mon
    ExcelApplication1.Quit;
    ExcelApplication1.Disconnect;
    Et ce jusqu'à ce que mon application se ferme. Il y a un truc que je dois pas faire correctement, mais j'ai pas encore trouvé... donc au passage si tu trouves...

    Mais ce n'est pas trop génant (il faut éviter d'ouvrir Excel en meme temps que ton appli est lancée).

    Voila bon courage et hésite pas si t'as besoin d'aide
    Vince

    PS : En fait j'utilise Excel 97, donc c'est possible que le nombre de paramètres des fonctions change

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 228
    Points : 117
    Points
    117
    Par défaut
    Bonjour et merci à toi plante20100, mais même avec ton code, j'ai toujours mon message d'erreur.

  16. #16
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Envoi nous l'intégralité de ton code, si possible, qu'on le teste.
    Tu peux le mettre en téléchargement sur un site ?

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 228
    Points : 117
    Points
    117
    Par défaut
    Bonjour laurent et merci pour ton aide.

    Dans ce projet, qui est plutot un essai de connection, j'ai seulement l'unité Excel_TLB que j'ai importée et une form avec un TBouton et ce code :

    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
    unit Accueil;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, OleServer, ComObj, Excel_TLB;
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      ExcelApplication1: TExcelApplication;
      ExcelWorkbook1: TExcelworkbook;
    begin
      ExcelApplication1.Connect;
    ExcelWorkbook1.ConnectTo(ExcelApplication1.WorkBooks.Add(xlWBATWorksheet,0));
     
    end;
     
    end.
    Et c'est tout
    Le connect de ExcelApplication passe bien, mais le ExcelWorkbook1.ConnectTo plante

  18. #18
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    pour ton exemple il faut utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (ExcelApplication1.WorkBooks.Open(
    car Add ne renvoi pas l'objet attendu par le prototype de la méthode ConnectTo.

    Voici un exemple extrait d'une de mes appli comme je n'ai pas trop le temps je te le donne tel que.
    A l'origine ce prg permet de lire n feuille de n classeur dans n répertoire et ce afin de convertir les données au format SqlLoadr pour Oracle.


    Crée un fichier XL avec au moins 3 feuilles.
    Dans chacune d'elle renseigne la 1 ere cellule de la 1ere ligne.
    Puis crée un projet VCL et ajoute ces composants :
    • ExcelApplication1: TExcelApplication;
      ExcelWorkbook1: TExcelWorkbook;
      ExcelWorksheet1: TExcelWorksheet;
      Button1: TButton;
      Memo1: TMemo;
      Memo2: TMemo;


    Enfin recopie le code suivant
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
     
     
    unit Main;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, OleServer,
      Excel2000, StdCtrls;
     
    const
     cstMonFichier='c:\temp\Test.xls';
     StartRow=1;                  // numéro de la premiére ligne d'information du fichier Excel
     
    type
     
      TForm1 = class(TForm)
        ExcelApplication1: TExcelApplication;
        ExcelWorkbook1: TExcelWorkbook;
        ExcelWorksheet1: TExcelWorksheet;
        Button1: TButton;
        Memo1: TMemo;
        Memo2: TMemo;
        procedure Button1Click(Sender: TObject);
        procedure ExcelApplication1WorkbookBeforeClose(ASender: TObject;
          const Wb: _Workbook; var Cancel: WordBool);
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
      private
        { Déclarations privées }
        lcid              : integer;       // page code pour Excel
        bExcelIsConnected : boolean;       // si la connection sur Excel est active
     
      public
        { Déclarations publiques }
        CurrentFilename  : String;         // fichier en cours de traitement
     
        Procedure XlOpen;
        Function XlOuvreFichier(FileName : TFileName):Boolean;
        Procedure ReadCurrentWorkSheet(SheetNumber:Byte);
        procedure ItereFichiers;
        procedure FermeXLS(FileName : TFileName);
        Procedure XlQuit;
      end;
     
    var
      Form1: TForm1;
     
    implementation
    {$R *.dfm}
    Procedure TForm1.XlOpen;
    begin
       // Crée une nouvelle instance du serveur.
      ExcelApplication1.ConnectKind := ckNewInstance;
      try
        ExcelApplication1.Disconnect;
        ExcelApplication1.Connect;
      except on E: Exception do
        begin
          E.Message := 'Excel indisponible.';
          MessageDlg(E.Message, mtInformation,[mbOk], 0);
          raise;
        end;
      end;
      ExcelApplication1.Visible[0] := True;
      bExcelIsConnected := True;
    end;
     
    Function TForm1.XlOuvreFichier(FileName : TFileName):Boolean;
    begin
     Try
      Result:=True;
        // Ouvre un fichier et le connecte au classeur ( avec les options par défaut )
      ExcelWorkbook1.ConnectTo( ExcelApplication1.WorkBooks.Open(FileName,0,False,5,VarEmpty,VarEmpty,True,xlWindows,VarEmpty,
       False,False,VarEmpty,VarEmpty,lcid));
     
      except on E: Exception do
      begin
        Result:=False;
        E.Message := 'Erreur d''ouverture du fichier Excel.';
        MessageDlg(E.Message, mtInformation,[mbOk], 0);
      end;
     end;
    end;
     
    Procedure TForm1.ReadCurrentWorkSheet(SheetNumber:Byte);
    var ColNumber,RowNumber   : Integer;
        S,L : String;
     
    Procedure Convert;
    {test le format de la cellule Excel, sinon probléme de convertion du type date-heure vers type flottant }
    begin
       L:=ExcelWorksheet1.Cells.Item[RowNumber,ColNumber].NumberFormat;
       // un cellule vide renvoie 0 ( zéro ) vers une String Pascal
       if (L='Standard') Or (L='Nombre')
        then
         begin
          L:=ExcelWorksheet1.Cells.Item[RowNumber,ColNumber];
          Memo2.Lines.Add('Format Standart '+  ExtractFileName(CurrentFileName)+' Feuille numéro : '+intTostr(SheetNumber)+' Ligne :'+intTostr(RowNumber)+' Colonne '+intTostr(ColNumber)) ;
         end
        else
         if (L='hh:mm') or (L='[h]:mm:ss')
          then L:= TimeToStr(ExcelWorksheet1.Cells.Item[RowNumber,ColNumber])
          else Memo2.Lines.Add('Format inconnu '+  ExtractFileName(CurrentFileName)+' Feuille numéro : '+intTostr(SheetNumber)+' Ligne :'+intTostr(RowNumber)+' Colonne '+intTostr(ColNumber)) ;
    end;
     
    begin
     try
       RowNumber:=StartRow;
       L:=ExcelWorksheet1.Cells.Item[RowNumber,1];
       While L <> '' do //  si L est vide , c'est la fin du fichier.
         begin
           S:='';
           for ColNumber:=1 to 10  do
            begin
              Convert;
            end;
            Inc(RowNumber);
            L:=ExcelWorksheet1.Cells.Item[RowNumber,1]; // lit la prochaine ligne
         end;
     
      except on E: Exception do
      begin
        E.Message := 'Erreur de lecture du fichier Excel.';
        MessageDlg(E.Message, mtInformation,
          [mbOk], 0);
      end;
     end;
    end;
     
    procedure TForm1.FermeXLS(FileName : TFileName);
    {ferme lie fichier Excel aprés traitement}
    begin
     try
        // se déconnect de la feuille
      ExcelWorksheet1.Disconnect;
     
        // Ferme et se déconnect du classeur
      ExcelApplication1.WorkBooks.Close(lcid);
      ExcelWorkbook1.Disconnect;
     
      except on E: Exception do
      begin
        E.Message := 'Erreur lors de la fermeture du fichier Excel.';
        MessageDlg(E.Message, mtInformation,
         [mbOk], 0);
        {raise;}
      end;
     end;
    end;
     
    Procedure TForm1.XlQuit;
    begin
    end;
     
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
      ExcelApplication1.Quit;
      bExcelIsConnected := False;
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      bExcelIsConnected := False;
      XlOpen;
      If bExcelIsConnected = False
       then Close;
      lcid := GetUserDefaultLCID;
    end;
     
    procedure TForm1.ExcelApplication1WorkbookBeforeClose(ASender: TObject;
      const Wb: _Workbook; var Cancel: WordBool);
    begin
       // Stop les alertes pour éviter la boîte de dialogue demandant de sauver avant de quitter.
      ExcelApplication1.DisplayAlerts[lcid] := False;
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
     Iterefichiers;
    end;
     
    procedure TForm1.ItereFichiers;
    const
       NombreFeuilleExcel=3;      //le fichier Excel comporte n feuilles.Chaque feuille
                                  // contient un nombre de colonne différente
     
    Var nbSheet :Integer;
        //FileList         : TStrings;       // liste des fichiers Excel à traiter
    begin
     // for I:=0 to FileList.Count-1 do
    //  begin
        CurrentFileName:=cstMonFichier;
        if XLOuvreFichier(CurrentFileName) then
        begin
          for nbSheet:=1 to NombreFeuilleExcel do
           begin
            //Memo1.Lines.Add(FileList.Strings[I]+' Feuille numéro : '+IntToStr(nbSheet));
            Memo1.Lines.Add(CurrentFileName+' Feuille numéro : '+IntToStr(nbSheet));
             // se déconnecte de la feuille
            ExcelWorksheet1.Disconnect;
                // Se connecte à la première feuille
            ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Sheets[nbSheet] as _WorkSheet);
            ExcelWorksheet1.Activate;
            ReadCurrentWorkSheet(nbSheet);
           end;
         FermeXLS(CurrentFileName);
       end;
      //end;
    end;
    end.
    On peut faire + simple comme exemple mais ici tu trouveras les bases de la manipulation d'Excel sous Delphi.

    A toi de jouer

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 228
    Points : 117
    Points
    117
    Par défaut
    Merci beaucoup.
    Avec çà, je mets le message sur résolu et je me débrouille.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 20/09/2007, 12h55
  2. Excel5 vers excel 2003
    Par MJMJ dans le forum Macros et VBA Excel
    Réponses: 47
    Dernier message: 24/03/2006, 19h57
  3. [VBA-E]Projet VB perdu dans un fichier Excel 2003
    Par cotmar dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 23/03/2006, 17h39
  4. [VB.NET] problème pour piloter une appli. excel 2003
    Par Pynuch dans le forum Windows Forms
    Réponses: 13
    Dernier message: 16/11/2005, 13h02
  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