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

API, COM et SDKs Delphi Discussion :

[Excel] Message "Interface non supportée"


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2002
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 22
    Points : 18
    Points
    18
    Par défaut [Excel] Message "Interface non supportée"
    Bonjour,

    J'ai un problème avec mon appli Delphi et excel.
    En effet, sur certains postes utilisateurs le message d'erreur "Interface non supportée" appraraît lorsque j'ouvre mon modèle de feuille excel.

    En regardant sur le forum, j'ai compris qu'il y avait un problème de version avec excel. J'ai donc remplacer tous les "Excel97" par des "ExcelXp" ... mais rien y fait !!

    Mon code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    uses
      DBTables,  IdGlobal, DB, DateUtils, ExcelXP, SysUtils, Variants, Types, Gauges,
      StdCtrls, Forms, uDataModule, Dialogs ;
     
    type
     
      {-- Class EXCEL REPORT --}
      TxlsRptDR = class
        ExcelApp  : TExcelApplication;
        rng       : ExcelXP.ExcelRange;
        xlsBk     : ExcelXP.ExcelWorkbook;
        xlsSht    : ExcelXP.ExcelWorksheet;
    et la suite ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        Filename := ExtractFilePath(paramstr(0)) + 'Excel\Shipping_DRSchedule.xls' ;
        ShowMessage('1');
     
        xlsBk := ExcelApp.Workbooks.Open(Filename, emptyParam, True, EmptyParam, EmptyParam,
        EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
        EmptyParam, EmptyParam, EmptyParam, 0);
     
        ShowMessage('2');
    Mes utilisateurs voient le message "1" mais jamais le "2" !!!
    Pouvez-vous me dire ce que je fais de travers car je sèche ?!!?
    Merci beaucoup,
    hathor

  2. #2
    rbh
    rbh est déconnecté
    Membre confirmé Avatar de rbh
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    384
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 384
    Points : 473
    Points
    473
    Par défaut
    Salut
    Je pense que les messages que tu vois sur certains postes viennent d'une version différente d'excel.
    Pour nos clients qui possèdent tout & n'importe quoi comme PC, OS et version d'office, on déclare les variables en OleVariant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var
      i: integer;
      ExlApp: OleVariant;
      ExlWBook: OleVariant;
    begin
      ...
      ExlApp := GetActiveOleObject('Excel.Application') as _Application;
      ...
      ExlApp.Workbooks.Open(MCPath + 'Model.xls', unassigned, true);
    On ne met pas tous les "EmptyParam" et on a aucun problème avec des excel de 95 à 2003

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2002
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Merci pour cette piste mais j'ai du coup un problème avec toutes mes lignes du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    xlsSht.Cells.Item[2,Col].HorizontalAlignment := xlHAlignRight ;
     
    rng.PageBreak := xlPageBreakManual ;
     
    rng := xlsSht.Range['B' + IntToStr(Lign), 'H' + IntToStr(Lign)];
    rng.Borders[xlEdgeBottom].LineStyle  := xlContinuous;
    rng.Borders[xlEdgeBottom].Weight     := xlMedium;
    rng.Borders[xlEdgeBottom].ColorIndex := xlAutomatic;
    Une idée ??
    Merci pour cette aide très précieuse !!

  4. #4
    rbh
    rbh est déconnecté
    Membre confirmé Avatar de rbh
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    384
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 384
    Points : 473
    Points
    473
    Par défaut
    tu as bien remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        ExcelApp  : TExcelApplication;
        rng       : ExcelXP.ExcelRange;
        xlsBk     : ExcelXP.ExcelWorkbook;
        xlsSht    : ExcelXP.ExcelWorksheet;
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        ExcelApp  : OleVariant;
        rng       : OleVariant;
        xlsBk     : OleVariant;
        xlsSht    : OleVariant;
    Si ce n'est pas ça, je ne sais pas d'ou ça peut venir, Je n'ai jamais utilisé les Range et je ne faisait aucune mise en page, je me contentais d'ouvrir différents modèles.

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2002
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Oui, j'ai bien fait le changement ...

    Une autre idée ??

  6. #6
    Débutant

    Inscrit en
    Décembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 166
    Points : 120
    Points
    120
    Par défaut
    Perso quand j'utilise Excel je fais ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var
       MyExcel: OleVariant;
    begin
       MyExcel := CreateOleObject('Excel.Application');
       MyExcel.Workbooks.Add;
     
       etc, etc, ...
    end;
    Ensuite pour eviter de repeter MyExcel.Machin, MyExcel.Truc, je passe par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With MyExcel do
    begin
    end;
    Et ca passe partout ... J'ai juste eu un probleme de parametre avec la Version 2003 mais vite resolu en passant les bons ...

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

Discussions similaires

  1. interface non supportée!
    Par Vanito dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 20/10/2010, 08h56
  2. Réponses: 2
    Dernier message: 01/09/2010, 09h36
  3. Réponses: 5
    Dernier message: 31/12/2008, 14h56
  4. Message Jointure non supportée
    Par Daniel MOREAU dans le forum Access
    Réponses: 6
    Dernier message: 26/02/2006, 18h03
  5. Interface non supportée
    Par Amara dans le forum Langage
    Réponses: 14
    Dernier message: 16/07/2004, 13h18

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