Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Excel Befehle über Lisp steuern

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Excel Befehle über Lisp steuern (1459 mal gelesen)
kurt.trattner
Mitglied
Mechanical Plant Engineer


Sehen Sie sich das Profil von kurt.trattner an!   Senden Sie eine Private Message an kurt.trattner  Schreiben Sie einen Gästebucheintrag für kurt.trattner

Beiträge: 46
Registriert: 28.05.2014

AutoCAD Mechanical 2012

erstellt am: 26. Aug. 2014 10:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo.
Ich habe eine kurze Frage.
Kennt ihr eine gute Anleitung, die beschreibt wie man aus Lisp heraus Excel Befehle steuert.

Formatierungen erzeugen klappt schon ganz gut.
Aber wenn es um kompliziertere Befehle wie "Replace" geht blicke ich nicht mehr durch.

Ich finde im Netz zwar die VBA Befehle. Aber leider habe ich noch keine Anleitung gefunden, die zeigt wie man diese in Lisp aufrufen kann.

Das müsste doch immer mit diesen vlax Befehlen möglich sein. So mache ich zumindest die Formatierungen.

Ich bedanke mich schon einmal für Tipps.

Lg. Kurt

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADwiesel
Moderator
CAD4FM UG




Sehen Sie sich das Profil von CADwiesel an!   Senden Sie eine Private Message an CADwiesel  Schreiben Sie einen Gästebucheintrag für CADwiesel

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 26. Aug. 2014 11:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für kurt.trattner 10 Unities + Antwort hilfreich

Wenn du etwas genauer beschreiben könntest, was du vor hast, und evtl auch mal etwas von dem Programmcode um den es dir geht, postest, fällt dem Anderen es sicher leichter dir auf deine Frage zu antworten.
(vlax-put-property ExcelCells "ITEM" zeile spaltet Text) schreibt z.b. in eine Excelzelle einen text hinein

------------------
Gruß
CADwiesel
Besucht uns im CHAT

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

kurt.trattner
Mitglied
Mechanical Plant Engineer


Sehen Sie sich das Profil von kurt.trattner an!   Senden Sie eine Private Message an kurt.trattner  Schreiben Sie einen Gästebucheintrag für kurt.trattner

Beiträge: 46
Registriert: 28.05.2014

AutoCAD Mechanical 2012

erstellt am: 26. Aug. 2014 11:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Mir ging es zunächst allgemein um das Verständnis wie das funktioniert.

Aber um konkret zu werden.

Ich habe Attributnamen die in ein Excel Dokument exportiert werden (ausgelesen aus ACAD)
Diese haben wenn sie aus zwei Wörtern bestehen statt einem Leerzeichen ein "_" als Trennzeichen.

Ich möchte nun im Excel das selbe über Lisp aufrufen wie wenn man händisch ' STRG+F -> Replace -> Find What "_" -> Replace With " " -> Replace All ' ausführt.
Ich habe im Netz einen VBA Code gefunden, der das könnte aber leider weiß ich nicht wie ich vom VBA Code auf einen ActiveX Code komme.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADwiesel
Moderator
CAD4FM UG




Sehen Sie sich das Profil von CADwiesel an!   Senden Sie eine Private Message an CADwiesel  Schreiben Sie einen Gästebucheintrag für CADwiesel

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 26. Aug. 2014 12:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für kurt.trattner 10 Unities + Antwort hilfreich

naja, du kannst doch nicht aus Acad die volle Funktionalitäten von Excel steuern. Aber du kannst ja das Makro, welches du gefunden hast ausführen lassen.
Dürfte irgendwie so gehen:

(vlax-invoke-method excel "Macroname")
oder so:
(vlax-invoke-method excel "Run"(strcat (vl-filename-base xlpath) ".xls!Macroname"))

------------------
Gruß
CADwiesel
Besucht uns im CHAT

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

kurt.trattner
Mitglied
Mechanical Plant Engineer


Sehen Sie sich das Profil von kurt.trattner an!   Senden Sie eine Private Message an kurt.trattner  Schreiben Sie einen Gästebucheintrag für kurt.trattner

Beiträge: 46
Registriert: 28.05.2014

AutoCAD Mechanical 2012

erstellt am: 26. Aug. 2014 13:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Wir wollen das ganze mit so wenig Zusatzmakros wie möglich umsetzen.
Und bevor wir für das ein Makro einbauen sollen die User das händisch machen.
Es wäre einfach ein "nice to have" Feature gewesen, wenn das automatisch passiert.

Aber mir ging es eigentlich nicht um das Problem im speziellen.
Ich suche eine allgemeine Anleitung darüber wie man Excel per ActiveX ansteuert mit Visual Lisp.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

neurosis
Mitglied
dipl.ing.


Sehen Sie sich das Profil von neurosis an!   Senden Sie eine Private Message an neurosis  Schreiben Sie einen Gästebucheintrag für neurosis

Beiträge: 222
Registriert: 22.08.2006

erstellt am: 26. Aug. 2014 17:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für kurt.trattner 10 Unities + Antwort hilfreich

hallo kurt,
und warum formatierst du die namen nicht schon im lisp?

gruss
marco

------------------
Marco Heuer
www.arc-aachen.de
Airport Office

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

kurt.trattner
Mitglied
Mechanical Plant Engineer


Sehen Sie sich das Profil von kurt.trattner an!   Senden Sie eine Private Message an kurt.trattner  Schreiben Sie einen Gästebucheintrag für kurt.trattner

Beiträge: 46
Registriert: 28.05.2014

AutoCAD Mechanical 2012

erstellt am: 27. Aug. 2014 06:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Die Namen kommen aus einer Assoziationsliste. Sie stellen immer den ersten Teil dar.
Formatiere ich sie bereits im Lisp um bleiben die unteren Spalten leer, da die Zuordnung nicht mehr passt.
Die Namen werden immer mit dem ersten Teil der Assoziationsliste verglichen. Passen die zwei Werte zusammen, wird der Attributwert in dieser Spalte ausgegeben.
Und ich wüsste nicht wie ich die Namen auch in der Assoziationsliste bearbeiten könnte.

Auch wenn das gehen würde müsste ich den umgekehrten Weg wieder in mein Importtool einbauen.
Damit die Namen wieder mit Attribut Tags zusammenpassen.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 27. Aug. 2014 07:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für kurt.trattner 10 Unities + Antwort hilfreich

So ganz habe ich das Bild noch nicht zusammen, aber was soll's.

Du mußt doch keine Liste ändern, lediglich den an schreib-mir-inExcelzell-Wert ...

Aber da es dir leicht fallen wird, bitte nochmal:
In Acad Blockreferenzen und Attribute, dann werden die in eine Excel"Vorlage" ei gefügt in denen die erwarteten Attributtags schon drin stehen oder wie genau ??

Thx

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

neurosis
Mitglied
dipl.ing.


Sehen Sie sich das Profil von neurosis an!   Senden Sie eine Private Message an neurosis  Schreiben Sie einen Gästebucheintrag für neurosis

Beiträge: 222
Registriert: 22.08.2006

erstellt am: 27. Aug. 2014 07:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für kurt.trattner 10 Unities + Antwort hilfreich

du musst die werte auch nicht in der assoc-list bearbeiten, du kannst fuer den export und import mit hilfe von vl-string-translate die namen konvertieren.
wenn die namen in der assoc-list symbole (also keine strings) sein sollten vorher noch mittels vl-princ-to-string in string umwandeln

gruss
marco

------------------
Marco Heuer
www.arc-aachen.de
Airport Office

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Meldin
Mitglied



Sehen Sie sich das Profil von Meldin an!   Senden Sie eine Private Message an Meldin  Schreiben Sie einen Gästebucheintrag für Meldin

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 27. Aug. 2014 10:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für kurt.trattner 10 Unities + Antwort hilfreich

Hallo
also wenn Excel die Arbeit machen soll dann versuche es so.
Code:
(defun c:ZeichenTausch (/)
    (setq Exappli (vlax-get-object "excel.application"))
    (setq ACWB (vlax-get-property Exappli "ActiveWorkbook"))
    (setq ACSheet (vlax-get-property ACWB "ACTIVESHEET"))
    (setq xlURange (vlax-get-property ACSheet "UsedRange"))
    (vlax-invoke-method xlURange 'Replace "_" " " 2)
  )

------------------
Gruß Wolfgang

Alias: Rabbit007 und Wolli1

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

kurt.trattner
Mitglied
Mechanical Plant Engineer


Sehen Sie sich das Profil von kurt.trattner an!   Senden Sie eine Private Message an kurt.trattner  Schreiben Sie einen Gästebucheintrag für kurt.trattner

Beiträge: 46
Registriert: 28.05.2014

AutoCAD Mechanical 2012

erstellt am: 27. Aug. 2014 15:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke Wolfgang du bist der Beste!

Genau diese Zeile hat mir gefehlt:

Code:
(vlax-invoke-method HeaderRange 'Replace "_" " " 2)

Der Rest war schon für die Formatierung vorhanden.

Wo hast du gelernt wie man die Befehle von Excel in Lisp anwendet?
Mich würde so eine Anleitung wirklich sehr interessieren.

Lg. Kurt

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Meldin
Mitglied



Sehen Sie sich das Profil von Meldin an!   Senden Sie eine Private Message an Meldin  Schreiben Sie einen Gästebucheintrag für Meldin

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 28. Aug. 2014 08:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für kurt.trattner 10 Unities + Antwort hilfreich

Hallo,
Also erstmals zu der Replace Zeile die 2 am ende kannst du weglassen ist wahrscheinlich von den "" ohne Shift stehengeblieben aber es schien ja trotzdem zu funktionieren.
Ansonsten findest du soweit alles in der Hilfe des eigentlichen Programms in dem fall Excel.
oder einfach googeln z.B. vba Excel replace . Da findest du dann ziemlich schnell was und in welcher Reihenfolge du welche Sachen du an Replace übergeben musst.
Zum anderen hilft dir vlax-dump-object hier darfst du nur das T am ende nicht vergessen denn dieses zeigt dir an welche Methoden anwendbar sind diese stehen dann immer ganz unten. z.B. (vlax-dump-object xlURange t). Daher viel probieren wenn du einmal verstanden hast wie das Gerüst aufgebaut ist kommt man da ziemlich schnell durch.

------------------
Gruß Wolfgang

Alias: Rabbit007 und Wolli1

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADwiesel
Moderator
CAD4FM UG




Sehen Sie sich das Profil von CADwiesel an!   Senden Sie eine Private Message an CADwiesel  Schreiben Sie einen Gästebucheintrag für CADwiesel

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 28. Aug. 2014 08:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für kurt.trattner 10 Unities + Antwort hilfreich

du kannst einfach auch mal die einzelnen Objecte dumpen, dann werden dir alle Methoden aufgelistet, die zur Verfügung stehen. dann musst du nur noch rauskriegen, was und wie man etwas damit machen kann

------------------
Gruß
CADwiesel
Besucht uns im CHAT

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz