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 :

Comment vérifier si Excel est installé ?


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 13
    Points : 13
    Points
    13
    Par défaut Comment vérifier si Excel est installé ?
    Bonjour,

    J'utilise Excel pour mon application via l'OLE.
    Mais comment savoir si Excel est installé sur le poste (avant de lancer l'OLE sinon ça plante) ?

    Je pensais regarder si l'exe est présent dans C:\Program Files\Microsoft Office\Office\excel.exe mais ce répertoire peur changer...

    Est-ce que quelqu'un a une idée ?
    Peut être dans la base de registre, mais quelqu'un connaît-il les bonnes clefs ?

    Merci d'avance
    @+

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2002
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2002
    Messages : 147
    Points : 144
    Points
    144
    Par défaut solution satisfaisante?
    Essaie ça, dans un try...except
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var
    MonXL:Variant;
    begin
    result:=true;
    try
            MonXL:=createoleobject('Excel.application');
    except
            MessageDlg('Problème lors de l''export vers Excel.'+#13+#10+'Excel n''est peut être pas installé.', mtError, [mbOK], 0);
            result:=False;
    end;
    If result then MonXL:=Nil;
    Ajoute dans la clause uses l'unité ComObj
    Si tu vas pas dans le except, alors XL est installé. J'ai peut être oublié une instruction pour bien libérer MonXL
    Si qqun peut compléter...

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2003
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 20
    Points : 25
    Points
    25
    Par défaut
    Tu l'as dans la base de registre sous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    HKEY_LOCAL_MACHINE\Software\Microsoft\Office\Excel

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    merci à vous deux.
    la deuxième solution me convient mieux, il vaut mieux prévenir que guérir

    cordialement
    mathieu

  5. #5
    Membre habitué Avatar de gord's
    Inscrit en
    Avril 2003
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 115
    Points : 127
    Points
    127
    Par défaut
    je trouve la premiere plus propre : le Ole Create peut planter pour d'autres raisons, et la clé de base de registre peut changer (peu probable, d'accord)

    [EDITE]
    ah oui, sans oublier ceux qui désinstallent Excel simplement en supprimant le répertoire...
    [/EDITE]

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    voici le morceau de code, si cela peut servir...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Var
      Registre : TRegistry;
    Begin
      Registre := TRegistry.Create;
      Registre.RootKey := HKEY_LOCAL_MACHINE;
      // on test si excel est installé
      If Registre.OpenKey('\SOFTWARE\Microsoft\Office\Excel', False) Then
      Begin
        FrmExcel.ShowModal;
      End
      else
        ShowMessage('L''importation nécessite que Excel soit installé.');
      Registre.CloseKey;
      Registre.Free;
    gord's avec cette méthode je n'ouvre même pas la formexcel, sinon il faudrait que j'ouvre la form, que je lui fasse choisir un fichier et attendre que ça plante pour lui dire qu'en faite il ne peut pas importer....
    Mais cela ne m'empêche pas de mettre des try pendant l'import ole au cas ou il y aurais un plantage, mais ça c dans un second temps, à mon avis.
    De toute façon je ne crois pas qu'il y ai une solution en informatiqe, il y a des milliers de problèmes et mille fois plus de solution pour les règler...

    cordialement
    mathieu

  7. #7
    Membre habitué Avatar de gord's
    Inscrit en
    Avril 2003
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 115
    Points : 127
    Points
    127
    Par défaut
    je crois que ça planterai dès le create Ole.
    Mais tu as raison : pas de solution unique !

  8. #8
    Membre régulier Avatar de jack554
    Inscrit en
    Février 2003
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 192
    Points : 106
    Points
    106
    Par défaut
    Bonjour,

    Discussion de 2002 ... Problème plus complexe en 2017 pour la base de registre car on a maintenant les différentes versions d'Office !

    HKEY_LOCAL_MACHINE
    ...SOFTWARE
    ......Microsoft
    .........Office
    ............11.0
    ............14.0
    ...............Excel
    ...............Word


  9. #9
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 752
    Points : 13 336
    Points
    13 336
    Par défaut
    Tu pourrais simplement contrôler que le raccourci existe:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\excel.exe

    et éventuellement t'assurer que le fichier existe par rapport aux infos de cette clé.

  10. #10
    Membre régulier Avatar de jack554
    Inscrit en
    Février 2003
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 192
    Points : 106
    Points
    106
    Par défaut
    Ou, plus terre à terre (mais dangereux ?) :

    Code basic : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      Dim Word_Existe As Boolean
      Word_Existe = False
     
      For I = 1 To 30
        If FichierExiste("C:\Program Files\Microsoft Office\Office" & I & "\winword.exe") Then Word_Existe = True
      Next I
     
      If Word_Existe Then
        MsgBox "oui"
      Else
        MsgBox "non"
      End If

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

Discussions similaires

  1. [Toutes versions] Vérifier qu'Excel est installé sur le poste
    Par titi95 dans le forum VBA Access
    Réponses: 7
    Dernier message: 12/05/2012, 21h24
  2. Comment Vérifier si Javascript est activé?
    Par Snivel dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/10/2006, 20h43
  3. comment vérifier que Java est installé
    Par scarpat dans le forum Oracle
    Réponses: 3
    Dernier message: 16/06/2006, 14h31
  4. comment savoir si python est installer
    Par pendragon509 dans le forum Général Python
    Réponses: 1
    Dernier message: 17/01/2006, 11h08
  5. Détecter si Excel est installé
    Par zbouby dans le forum C++Builder
    Réponses: 8
    Dernier message: 08/11/2005, 16h12

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