Aller au contenu

Ouverture fichier Excel


pixel61

Messages recommandés

Bonjour à tous

 

Voila, en cherchant un moyen pour ouvrir un fichier Excel j'ai trouvé un post de 2004 de Patrick_35 (que je remercie)

d'ou j'ai extrait quelques lignes de code (légèrement modifié) et ça donne ceci :

 

(defun c:Test ()
(vl-load-com)

'--> Lancer Excel
(setq xl (vlax-get-or-create-object "Excel.Application"))
(vlax-import-type-library
 :tlb-filename "C:/Program Files/Microsoft Office/Office11/MSOUTL.OLB"
 :methods-prefix "xl-"
 :properties-prefix "xlp-"
 :constants-prefix "xlc-")
(setq xl_wks (vlax-get xl "Workbooks"))

'--> Ouvrir le fichier
(setq xl_fichier (xl-open xl_wks "C:\\Test.xls"))

'--> Rendre Excel visible
(vla-put-visible xl 1)

'--> Choisir la feuil1 du classeur
(setq xl_classeur (vlax-get xl_fichier "Sheets"))
(setq xl_feuille (xlp-get-item xl_classeur "Feuil1"))
)

La routine fonctionne très bien, le seul problème c'est que lorsque je quitte le fichier, Excel reste actif dans les processus

du gestionnaire de tâches de Windows, d'ou ma question, il y a un problème dans le code ? ou alors esqu'il y a un autre moyen

d'ouvrir un fichier excel ?

 

Merci pour votre aide

A+

 

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Il faut refermer le document ouvert et faire un peu de ménage

 

;; Fermer le document
(vlax-invoke-method
   (vlax-get-property xl "ActiveWorkbook")
   'Close
   :vlax-False
)
;; Quitter l'application
(vlax-invoke-method xl 'Quit)
;;Faire le ménage
(vlax-release-object xl)
;; libérer la mémoire
(gc)

 

Tu peux aussi voir les routines de Terry Miller ici.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Salut

 

Merci pour vos infos, au fait gile la routine fonctionne très bien, le but étant d'ouvrir un document Excel et le laisser ouvert donc je ne peux pas le fermer au niveau de la routine.

Ce que je ne comprends pas c'est pourquoi si je lance Excel normalement (pas depuis la routine) quand je le quitte il s'enlève depuis le gestionnaire des taches alors que si je

démarre Excel depuis la routine lorsque je le quitte il reste actif dans le gestionnaire.

Bon ce n’est pas un problème à la limite, c'était plus pour comprendre le pourquoi du comment :)

 

Encore merci pour votre aide

 

 

[Edité le 22/7/2009 par pixel61]

Lien vers le commentaire
Partager sur d’autres sites

Ce que je ne comprends pas c'est pourquoi si je lance Excel normalement (pas depuis la routine) quand je le quitte il s'enlève depuis le gestionnaire des taches alors que si je

démarre Excel depuis la routine lorsque je le quitte il reste actif dans le gestionnaire.

 

C'est comme ça, .... !

 

Par prog, il faut faire le (vlax-invoke-method xl 'Quit) car c'est une "aplication" que tu as créé momentanément.

 

Je n'ai pas le vocabulaire pour l'expliquer. Mais c'est le jeu !

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

Salut

 

Désolé tramber, mais c'est pas exactement cela.

 

Il faut faire un vlax-release-object sur toutes les variables qui utilisent Excel et ensuite nettoyer la mémoire avec (gc)

 

C'est ce qu'a indiqué (gile)

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

De toutes façon, si le but est juste d'ouvrir un fichier Excel, je ne vois pas l'intérêt de passer par de la programmation.

 

Si tu tiens vraiment à procéder de la sorte, il faudrait avoir un pointeur vers l'objet dans une variable globale pour pouvoir l'utiliser dans une autre routine qui fermerait le fichier. C'est ce que font les routines OpenExcel et CloseExcel dans le lien que j'ai donné plus haut.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Désolé tramber, mais c'est pas exactement cela.

 

Oui il faut quitter + le release.

 

Mais de toutes façons, moi je suis tranquille, j'utilise les fonctions iKozmos, y a tout dedans et j'ai fait des trucs dingues. :D qui tournent au poil.

 

J'aurais mieux appris si cela avait été avant que toi-même t'y intéresse et publie ici. C'est dire il y a longtemps... on devient vieux :exclam:

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité