Aller au contenu

Messages recommandés

Posté(e)

un petit retour sur l'exportation de données vers excel 10.

Fonctionne sur autocad 2004.

 

Totalement repris de : http://www.cadxp.com/sujetXForum-4272.htm Merci Patrick_35.

Chemin excel: http://www.cadxp.com/modules.phpop=modload&name=XForum&file=viewthread&tid=4827 Re Merci Patrick_35.

 

;;;Pour activer les fonctions visual-lisp

(vl-load-com)

 

;;;Lancer Excel

(setq xl (vlax-get-or-create-object "Excel.Application"))

(vlax-import-type-library

;;;excel

:tlb-filename "c:/program files/Microsoft Office/Office10/Excel.exe";utiliser ici le lisp chemin excel en remplaçant par un (car (liaison_excel)) re re merci Patrick_35

:methods-prefix "xl-"

:properties-prefix "xlp-"

:constants-prefix "xlc-")

(setq xl_wks (vlax-get xl "Workbooks"))

 

;;;Ouvrir le fichier "".xls dans le dossier

(setq xl_fichier (xl-open xl_wks "C:\\Prototype.xls"))

 

;;;Choisir la feuille feuille1du classeur

(setq xl_classeur (vlax-get xl_fichier "Sheets"))

(setq xl_feuille (xlp-get-item xl_classeur "feuil1"))

 

;Choisir la cellule sélectionnée de la feuille ex: "B9"

(setq celluleselectionnee (xlp-get-range xl_feuille cellule-excel))

 

;Ecrire une variable dans la cellule sélectionnée précedement

(xlp-put-value2 cellule-excel valeur-ecrire)

 

 

;;;Sauvegarder le fichier

(xl-saveas xl_feuille nomFichier)

 

;;;rendre visible excel

(vla-put-visible xl 1)

 

;;;Fermer le fichier

(xl-close xl_wks)

 

 

 

Pas essayé la lecture dans une cellule.

Difficulté pour fermer excel totalement, je lance le gestionnaire des taches windows XP et termine le processus.

Ensuite je ferme et relance Autocad afin de pouvoir réutiliser les fonctions excel.

 

 

 

[Edité le 30/3/2006 par MAC]

Posté(e)

Difficulté pour fermer excel totalement, je lance le gestionnaire des taches windows XP et termine le processus.

Ensuite je ferme et relance Autocad afin de pouvoir réutiliser les fonctions excel.

 

(vlax-invoke-method xl 'QUIT)
 (vlax-release-object xl)

 

Essaie ça. Je pense que c'est le truc à faire (pas sur à 100%, mais c'est histoire de participer !)

 

Pour la lecture des cellules, c'est fastoche, c'est get au lieu de put !

 

Tiens, puisque Patrick va lire, j'ai une question :

 

Quelle différence entre xlp-put-value2 et xlp-put-value, j'ai déjà vu les 2, il me semble

 

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

En fait, je crois que tu peux faire un release sur la feuille, la cession, le fichier, tout quoi.

 

J'ai parfois les mêmes problèmes. Et ca se corse quand Excel est déjà ouvert, ....etc.

 

C'est dur parfois.

 

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Bonjours,

Afin de soulager amicalement Patrick, et vu qu'il m'a répondu sur le même sujet hier, je me permet de vous conseiller d"aller voir là : http://www.cadxp.com/sujetXForum-9442.htm...

J'ai testé, cela fonctionne parfaitement et proprement...

 

(je cherche toujours concernant le message d'enregistrement par contre...)

 

Salutations

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)
(je cherche toujours concernant le message d'enregistrement par contre...)

 

C'est à dire ?

 

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Dans le message précedement cité je faisait part d'un souci que j'avais concernant l'enregistrement d'Excel lorsqu'il se ferme à la demande du lisp.

En fait JE NE VEUX PAS enregistrer les modifications, afin de garder mon classeur tel quel, mais comme je rentre une données dans Excel, qui me fait une recherche dans un tableau, il me demande à la fermeture "voulez-vous enregistrez les modif. ?"...

Voilà mon souci.

Et si c'est un paramètre dans Excel, je n'arrive pas à le trouver non plus...

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Je comprends

 

 

.....même si je ne sais pas t'aider !

 

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Désolée mais quoique je fasse, je suis obligé de fermer autocad pour qu'excel se termine en tant

que processus.Le (gc) ne fait rien et je respecte toutes les autres étapes auparavant...???..

 

pas grave! le reste fonctionne à merveille.

A+ et merci...

 

  • 2 semaines après...
Posté(e)
Tiens, puisque Patrick va lire, j'ai une question

Ouui, mais forcement de suite, je reviens de stage ;)

 

Quelle différence entre xlp-put-value2 et xlp-put-value, j'ai déjà vu les 2, il me semble

value et value2 fonctionne sue Excel97 alors que pour les autres versions, seul value2 marche. (Je ne l'ai découvert que très récemment)

Ce doit être une évolution entre les différentes versions d'excel

 

(vlax-invoke-method xl 'QUIT)
(vlax-release-object xl)

Ce que donne Tramber est excellent, il faut faire attention à la variable est si ellle a été déclarée comme ceci

(setq Xl (vlax-get-or-create-object "Excel.Application"))

il n'y a pas de raison que ça ne fonctionne pas

 

J'ai parfois les mêmes problèmes. Et ca se corse quand Excel est déjà ouvert, ....etc.

Pour savoir si Excel est lancé

(vlax-get-object "Excel.Application")

 

ps : le (gc) est utile quand on a fermé Excel afin d'éviter de le retouver dans le gestionnaire des tâches.

 

@+

 

[Edité le 8/4/2006 par Patrick_35]

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

  • 2 semaines après...
Posté(e)

Difficulté pour fermer excel totalement, je lance le gestionnaire des taches windows XP et termine le processus.

Ensuite je ferme et relance Autocad afin de pouvoir réutiliser les fonctions excel.

 

(vlax-invoke-method xl 'QUIT)
 (vlax-release-object xl)

 

bonjour

 

je n'utilise pas (gc) mais je fais un release dans l'ordre inverse de leur création,

donc j'obtiens quelques chose du genre :

(if (not (vlax-object-released-p Currcells))(vlax-release-object Currcells))

(if (not (vlax-object-released-p CurrSheet))(vlax-release-object CurrSheet))

(if (not (vlax-object-released-p CurrWorkbk))(vlax-release-object CurrWorkbk))

(if (not (vlax-object-released-p Workbk))(vlax-release-object Workbk))

(if (not (vlax-object-released-p ObjExcel))(vlax-release-object ObjExcel))

 

je trouve prudent d'utiliser vlax-object-released-p qui permet de savoir si un objet est released ou pas, car s'il est déjà libérer alors vlax-release-object engendrera une erreur.

 

Bruno Toniutti.

Posté(e)

(if (not (vlax-object-released-p Currcells))(vlax-release-object Currcells))

(if (not (vlax-object-released-p CurrSheet))(vlax-release-object CurrSheet))

(if (not (vlax-object-released-p CurrWorkbk))(vlax-release-object CurrWorkbk))

(if (not (vlax-object-released-p Workbk))(vlax-release-object Workbk))

(if (not (vlax-object-released-p ObjExcel))(vlax-release-object ObjExcel))

 

Salut

(if (not (vlax-object-released-p ObjExcel))(vlax-release-object ObjExcel)) 

Cela devrait logiquement suffire vu que c'est pour fermer Excel, donc le Workbooks et le Sheets sont fermés aussi ?

 

je trouve prudent d'utiliser vlax-object-released-p

(vl-catch-all-apply 'vlax-release-object (list ObjExcel))

Peut aussi fonctionner

 

@+

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

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é