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.
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.
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
3Collection Workbooks Collection de tous les objets Workbook actuellement ouverts dans l'application Microsoft Excel.
J'utilise ce cvode pour fermer tout classeur ouvert à partir du moment ou il y en a un d'ouvert.
Malheureusement le count renvoit tjrs zero même si j'ai des classeurs 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;
Oui mais comment laurent c'est le theme de ma question.Regarde dans la collection Workbooks si le classeur existe ou pas.![]()
Salut,
a prioris pas de pb de mon coté
Ensuite tu peux essayer de charger un fichier, en utilisant son nom, via la propriété item :
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;
Si il n'existe pas, une erreur OLE sera levée, à vérifier.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.
A+
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager