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] Commentavoir si un classeur est déjà ouvert ?


Sujet :

API, COM et SDKs Delphi

  1. #1
    Inactif
    Profil pro
    Inscrit en
    Février 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 33
    Points : 22
    Points
    22
    Par défaut [Excel] Commentavoir si un classeur est déjà ouvert ?
    Bonjour,
    J'ai parcouru <> faq delphi/excel et je sais ouvrir et fermer des classeurs mais je n'ai pas trouvé comment vérifié si un classeur est ouvert ou non.

    Ma question est donc implicite.

    Merci.

  2. #2
    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,
    a prioris un classeur ( Workbook) fermé n'est plus dispos sous Excel.
    Regarde dans la collection Workbooks si le classeur existe ou pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Collection Workbooks
    Collection de tous les objets Workbook actuellement ouverts dans l'application Microsoft Excel.

  3. #3
    Inactif
    Profil pro
    Inscrit en
    Février 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    Merci ... Je vais essayer sur le champ.

  4. #4
    Inactif
    Profil pro
    Inscrit en
    Février 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    J'utilise ce cvode pour fermer tout classeur ouvert à partir du moment ou il y en a un d'ouvert.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    If form2.ExcelApplication1.Workbooks.Count <> 0 Then
       begin
         for cpt := 0 to form2.ExcelApplication1.Workbooks.Count
          do
           form2.ExcelApplication1.Workbooks.Close( cpt);
     
     
     
       end;
    Malheureusement le count renvoit tjrs zero même si j'ai des classeurs d'ouvert.

  5. #5
    Inactif
    Profil pro
    Inscrit en
    Février 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    Regarde dans la collection Workbooks si le classeur existe ou pas.
    Oui mais comment laurent c'est le theme de ma question.

  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
    Salut,
    a prioris pas de pb de mon coté

    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
     
    var  cpt : longint;
         FileName:string;
         Worksheet: variant;
    begin
    If ExcelApplication1.Workbooks.Count <> 0 Then
       begin
         MessageDlg(IntToStr(ExcelApplication1.Workbooks.Count), mtWarning, [mbOK], 0);
         for cpt := ExcelApplication1.Workbooks.Count downto 1
          do
           begin
            Worksheet:=ExcelApplication1.Workbooks.Item[cpt];
            FileName:=Worksheet.Fullname;
            MessageDlg(FileName, mtWarning, [mbOK], 0);
            Worksheet.Close;
            MessageDlg(IntToStr(ExcelApplication1.Workbooks.Count), mtWarning, [mbOK], 0);
           end;
         // Ou en lieu et place de la boucle
         //ExcelApplication1.Workbooks.Close(0);
         MessageDlg(IntToStr(ExcelApplication1.Workbooks.Count), mtWarning, [mbOK], 0);
       end;
    end;
    Ensuite tu peux essayer de charger un fichier, en utilisant son nom, via la propriété item :
    expression.Item(Index)

    expression Obligatoire. Expression qui renvoie un objet Workbooks.

    Index Argument de type Variant obligatoire. Nom ou numéro d'index du classeur.
    Si il n'existe pas, une erreur OLE sera levée, à vérifier.
    A+

  7. #7
    Inactif
    Profil pro
    Inscrit en
    Février 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    Merci ...

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

Discussions similaires

  1. Excel 2003 - Détecter si un classeur est déjà ouvert
    Par Daejung dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 24/12/2008, 08h37
  2. OLE Excel, pointer vers le classeur ouvert
    Par Sunchaser dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/06/2007, 22h14
  3. Tester si un fichier excel est déjà ouvert
    Par richard038 dans le forum Delphi
    Réponses: 3
    Dernier message: 08/10/2006, 14h01
  4. [Excel] Vérifier si un classeur est en lecture seule
    Par Rakham dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/01/2006, 08h44
  5. Réponses: 5
    Dernier message: 05/11/2005, 11h43

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