| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: Wo bin ich - in Excel ? (2590 mal gelesen)
|
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1455 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 16. Aug. 2006 15:23 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich hab ja einiges über Datenaustausch mit Excel hier gelesen, aber jezt wüsste ich gern wie ich in Lisp rauskriege welche Zelle (oder welcher Zellbereich) in Excel markiert ist. Ich hab mich da schon etwas reingewurschtelt - aber ich raffs einfach nicht. Kann mir das jemand so richtig für Doofe erklären ? Danke Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004
|
erstellt am: 16. Aug. 2006 16:58 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas Kraus
|
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1455 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 17. Aug. 2006 08:30 <-- editieren / zitieren --> Unities abgeben:
Hallo Frederik, Ja hab ich. Mir gehts auch nicht um den Datenaustausch, der klappt prima. Ich möchte wissen welche Zellen im Excel markiert sind um dann im ACAD die Objekte zu markieren die zu diesen Excel-Zellen gehören. Gruß Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004
|
erstellt am: 17. Aug. 2006 09:12 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas Kraus
Hallo Andreas, das geht meines Wissens nur mit VBA ordentlich, lasse mich aber gerne eines besseren belehren. Leider bin ich auf dem Gebiet ziemlich blank. Hilft Dir was banales wie z.B. "Range("B30:E37").Select" (VBA in Excel) weiter? Falls nicht, wissen die Profis hier sicherlich mehr :-) Frederik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1455 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 17. Aug. 2006 22:06 <-- editieren / zitieren --> Unities abgeben:
|
Ex-Mitglied | |
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1455 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 22. Aug. 2006 12:37 <-- editieren / zitieren --> Unities abgeben:
Wenn ich folgendes ablaufen lasse: (if (setq excel (vlax-get-object "excel.application")) (progn (setq ExcelWorkbook (if excel (vlax-get-property excel "ActiveWorkbook" ) ) ExcelSheet (if ExcelWorkbook (vlax-get-property ExcelWorkbook "ACTIVESHEET" ) ) ExcelCells (if ExcelSheet (vlax-get-property ExcelSheet "CELLS" ) ) ) ) (alert "Excel nicht gefunden") ) und dann (vlax-dump-object ExcelCells) eingebe, finde ich in der Auflistung diese Zeile: ; Range (RO) = ...Indizierter Inhalt wird nicht angezeigt...
Was ist das ? Wie komme ich da dran ? Hilft mir das weiter ? Dankbar für JEDE Hilfe Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied | |
Ex-Mitglied | |
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1455 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 01. Sep. 2006 06:47 <-- editieren / zitieren --> Unities abgeben:
|
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1455 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 04. Sep. 2006 11:18 <-- editieren / zitieren --> Unities abgeben:
Hallo Rabbit007, es wär super ween du mir mal den Quelltext (auch Auszugsweise) geben könntest. Mit der VLX kann ich zwar feststellen daß du es geschafft hast die Markierten Zellen zu finden, ich würd das aber auch gern schaffen. Danke Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
megge Mitglied Bauingenieur
Beiträge: 66 Registriert: 11.09.2002
|
erstellt am: 04. Sep. 2006 20:08 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas Kraus
|
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1455 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 05. Sep. 2006 07:45 <-- editieren / zitieren --> Unities abgeben:
Hallo Markus, prima Programm. Aber wie ich schon ganz am Anfang bemerkt habe: bitte für Doofe. Dein Programm schreibt zwar etwas in alle markierten Zellen, aber welche Zellen das sind bekomme ich immer noch nicht raus. Es kann ja sein daß das ganz einfach ist, aber ich weis es halt einfach nicht. Hab mich aber auch immer noch nicht intensiv mit diesen ganzen Objekten beschäftigen können. Gib mir doch mal einen Tritt in die richtige Richtung. Danke Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
megge Mitglied Bauingenieur
Beiträge: 66 Registriert: 11.09.2002
|
erstellt am: 05. Sep. 2006 08:51 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas Kraus
Hallo Andreas.. Im Anhang die Lösung zu deinem Problem. Ich wüde mir mit (vlax-dump-object) die verschiedenen Objekte mal ansehen. Mit (vlax-dump-objekt selec2) aus der Lisp im Anhang kann man sich ein paar interresante Sachen raussaugen. Gruß Markus [Diese Nachricht wurde von megge am 05. Sep. 2006 editiert.] [Diese Nachricht wurde von megge am 05. Sep. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
megge Mitglied Bauingenieur
Beiträge: 66 Registriert: 11.09.2002 Windows 7 Professional AutoCAD 2012 - Deu REVIT ARCHITECTURE 2012 Intel Core i5-2500 3.30 GHz 4,00 GB Ram AMD Radeon HD 6570
|
erstellt am: 05. Sep. 2006 09:03 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas Kraus
|
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1455 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 05. Sep. 2006 11:46 <-- editieren / zitieren --> Unities abgeben:
Hallo Markus, danke - ist ja eigentlich einfach. Aber eine Frage hab ich noch: Wenn ich z.B. mit Row eine einzelne markierte Zeile ermitteln kann, kann ich dann mit Rows die Zeilen eines markierten Bereichs ermitteln ? Wie komme ich denn an die Einträge eines solchen Range-Objects drann ? Oder hab ich da wieder die falsche Richtung ? vielen Dank Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
megge Mitglied Bauingenieur
Beiträge: 66 Registriert: 11.09.2002
|
erstellt am: 05. Sep. 2006 12:33 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas Kraus
In Rows gibt Count die Anzahl der markierten Zeilen an. Das selbe gilt für Columns und Count. Dabei ist die vorhin ermittelte Zelle mit Row und Column die oberste linke Zelle. Einfach ein bisschen rumprobieren ... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1455 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 05. Sep. 2006 14:09 <-- editieren / zitieren --> Unities abgeben:
schon geil irgendwie Danke !!! Vieleicht will ich ja zu viel, aber jezt wärs noch der Hammer wenn ich in Excel nicht zusammenhängende Zeilen (oder Spalten) markieren könnte und diese Markierten Bereiche rauskriegen könnte. Dann wär doch eigentlich alles drinn was geht - oder ? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied | |
megge Mitglied Bauingenieur
Beiträge: 66 Registriert: 11.09.2002
|
erstellt am: 05. Sep. 2006 15:27 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas Kraus
Du willst uns nur auf die Probe stellen? Nicht wahr? Ich bin zur Zeit noch nicht weiter als Du. Ich probiere ein wenig rum. Ich versuche gerade, nachdem die Zelle geändert wurde, die nächste darunter zu markieren. (nicht die rechts davon, das geht mit next) Aber waren die Aussichten am Anfang dieses Themas auch noch so trüb... so langsam erkennt man das Licht am Ende des Tunnels... Gruß Markus
[Diese Nachricht wurde von megge am 05. Sep. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied | |
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1455 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 05. Sep. 2006 16:40 <-- editieren / zitieren --> Unities abgeben:
Hallo Rabbit 007, du hast ja schon ein Programm hier reingestellt was genau das tut was ich suche, hast dich aber leider auf meine Bitte nach dem Quelltext (auch Auszugsweise) nicht gemeldet . Ich möcht einfach nur in Lisp wissen welche Zellen in Excel markiert sind, hab ich doch schon erklärt. Ich möcht auch niemanden hier verärgern, schließlich bin ich ja der mit der Frage, aber wenn ich Frage Zitat: -------------------------------------------------------------------------------- Ich möchte wissen welche Zellen im Excel markiert sind um dann im ACAD die Objekte zu markieren die zu diesen Excel-Zellen gehören. -------------------------------------------------------------------------------- dann bekomme ich Antworten die mir etwas in die markierten Zellen schreiben usw. Das brauch ich doch alles gar nicht. Tschuldigung Markus, aber ich brauche keinen Zugriff auf die Zellen sondern ich muß wissen welche es sind. Aber das hat mich bei was anderem weitergebracht, danke. Ich habe Attribute ausgelesen und richtung Excel geschickt. Wenn ich jezt im Excel Daten markiere möchte ich im ACAD z.B. die Griffe der zugehörigen Objekte einschalten oder so. Das können natürlich auch Zellen sein die nicht zusammenhängen, also irgendwelche. Ich hatte auch nach Range-Objekten gefragt weil ich nicht weis was das ist und was ich damit anfange und wie. Ich wurschtel mich ja gerne da durch, aber mir fehlt halt der Durchblick weil ich in der Objektorientierten programmierung noch nicht viel Knoff-Hoff habe. Informationen wie "schau mal da nach" bringen mir nur dann was wenn ich auch diese Informationen weiterverarbeiten kann. Wenn ich aber nicht weis wie, bin ich genau so weit wie vorher. Leider. Es hängt sicher nicht daran Informationen in den Excel-Objekten zu finden (ich hab schon so ziemlich überall gesucht), sonder eher daran diese zu verarbeiten bzw. an diese heranzukommen. Ach ja: Ich stell auch keinen auf die Probe und betteln tu ich auch nicht. Ich möcht einfach nur ne Antwort auf ne Frage. Tut mir leid wenn sich das so entwickelt hat, aber eigentlich hab ich gleich am Anfang schon die richtige Frage gestellt. Hoffentlich bekommt das jezt keiner in den falschen Hals. Gruß Andreas
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied | |
Ex-Mitglied | |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 05. Sep. 2006 22:13 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas Kraus
Hier gehts doch nur um die Bestimmung der ausgewählten Bereiche in Excel auis AutoCAD heraus - richtig? Ich habe da mal ein paar Zeilen Code als Denkanstoß zusammengeklappert: Code:
(defun ExSel ( / CNTAREAS EXCELAPP EXCELSELECTIONAREAS I RANGEAREA rangelist) ; Udo Hübner - www.CAD-Huebner.de ; 05.09.2006 ; ; Rückgabe der in Excel markierten Zellen / Bereiche ; beginnend vom Excel Objekt hangeln wir und durch die (evt. unbekannten) Methoden und Eigenschaften von Excel ; mit Hilfe der Lisp Anweisung vlax-dump-object geben wir die verfügbaren Eigenschaften aus ; die Zwischenvariablen dienen ausschließlich Testzwecken (if (setq ExcelApp (vlax-get-object "excel.application")) (progn (setq ExcelselectionAreas (vlax-get-property (vlax-get-property Excelapp "Selection") "Areas")) ; (vlax-dump-object ExcelselectionAreas) (setq i 1) (repeat (vlax-get-property ExcelselectionAreas "Count") ; Anzahl Areas (setq RangeArea (vlax-get-property ExcelselectionAreas "item" i)) (setq rangelist (cons (vlax-get-property RangeArea "Address" :vlax-True :vlax-True Nil Nil) rangelist)) ; Hier werden die Bereiche im Excel Zellformat ausgegeben (setq i (1+ i)) ) ) ) rangelist ; Rückgabe der Bereiche als Liste von Strings in Excelschreibweise ) ;;; Aus der Excel VBA Hilfe - ALT F11 = Visual Basic Editor, da F1 und "Address" eingetippt. ;;; Als Ergebnis erhält man: ;;; Ausdruck.Address(RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo) ;;; nebst weiterer ausführlicher Erläuterung ... (prompt "\nExSel.lsp geladen. Start mit (ExSel) = Excel Selektion ausgeben - www.CAD-Huebner.de") (princ)
------------------ Mit freundlichem Gruß Udo Hübner [Diese Nachricht wurde von CAD-Huebner am 05. Sep. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1455 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 05. Sep. 2006 23:48 <-- editieren / zitieren --> Unities abgeben:
Hallo Rabbit 007, das ist ja der Wahnsinn. Dass isses. Boä is das geil ey ! Wie soll denn ein normaler Mensch drauf kommen was für Parameter da gebraucht werden ? Und wenn man nicht weis daß das die Lösung ist, wie soll man danach fragen ? JA DU KONNTEST MIR WEITERHELFEN !!! Dafür die volle Punktzahl Danke Andreas
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied | |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 06. Sep. 2006 09:08 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas Kraus
Zitat: Original erstellt von Andreas Kraus: ...Wie soll denn ein normaler Mensch drauf kommen was für Parameter da gebraucht werden ?...Andreas
Um die richtigen Parameter für ActiveX Aufrufe herauszufinden, ist (vlax-Dump-Object Object) in AutoLisp schon ein geeignetes Mittel, um die verfügbaren Eigenschaften (Properties) und Methoden aufzulisten. Was die Eigenschaften und Methoden im Einzelnen bedeuten und welche Parameter nötig sind, kann man in der Dokumentation des jeweiligen ActiveX Servers (hier Excel und dann alt F11 - F1 in der VBA Hilfe nachlesen) - oder direkt in C:\Programme\Microsoft Office\OFFICE11\1031\vbaXL10.chm nachlesen. Eine gute Kenntnis des jeweiligen Programmes (hier Excel) und dessn Möglichkeiten sollte man allerdings haben. Für AutoCAD selbst gibt es dafür die Datei C:\Programme\AutoCAD 2007\Help\acadauto.chm @Rabbit007 - Reverse Die Rückgabe der Zellbereiche in meiner Routine erfolgt offentsichtlich in Selektionsreihenfolge (wie in Excel gewählt). Dabei ist der zuletzt gewählte Selectionsbereich der erste EIntrag der Rückgabeliste. Mit der Lisp-Funktion REVERSE ist es möglich, die Reihenfolge der Listenelemente umzukehren. Sollte das gewünscht sein, kann man das natürlich noch einbauen. Ebenso ist eine Sortierung der Zellbereiche in aufsteigender numerischer bzw.- alphabetischer Reihenfolge möglich - wie gesagt - das soll nur ein Denkanstoß sein - es ist praktisch noch keine Fehlerprüfung eingebaut. ------------------ Mit freundlichem Gruß
Udo Hübner [Diese Nachricht wurde von CAD-Huebner am 06. Sep. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GrassHopper Mitglied CAD-Betreuer
Beiträge: 22 Registriert: 18.03.2006
|
erstellt am: 25. Nov. 2006 01:03 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas Kraus
Hallo zusammen, da ich zurzeit an genau dem Thema Excel->Lisp arbeite stelle ich euch meine Variante zur Verfügung. Ich lade im Programm die Type Library von Excel und kann dann auf die Konstanten, Methoden und Eigenschaften von Excel zurück greifen. Zum besseren Verständnis hab ich alle Aktionen mit Anmerkungen versehen. Viel Spaß beim Testen GrassHopper Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied | |
GrassHopper Mitglied CAD-Betreuer
Beiträge: 22 Registriert: 18.03.2006
|
erstellt am: 25. Nov. 2006 13:50 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas Kraus
Hallo Rabit007, Zugriff auf die aktuell selektierten Zellen mit (msxp-get-rangeSelection (vlax-get msx 'activewindow)) Beispiel: (setq selection(msxp-get-rangeselection (vlax-get msx 'activewindow)) selZellen nil ) (vlax-for item selection (setq selZellen (append selZellen (list (vlax-variant-value (msxp-get-FormulaR1C1 item))))) ) Das VLA-Object Selection enthält den selektierten Bereich. Auf die einzelnen Zellen greife ich dann in der VLAX-FOR-Schleife zu. mit msxp-get-FormulaR1C1 erhalte ich den Inhalt der Zelle. Diese speichere ich dann in der Liste selZellen. Mit (msxp-get-count Selection) erhalte ich die Anzahl der selektierten Zellen. Den Vorteil oder Nutzen den ich aus der Art ziehe ist dass ich die Bezeichnungen der Konstanten, Methoden und Properties über das Apropos-Fenster durchsuchen kann. In der Excel-VBA-Hilfe schaue ich mir dann die Beschreibung zu dem Befehl an. Aber das ist reine "Geschmaksache". Ich hoffe ich konnte dir damit helfen. Grüße GrassHopper Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |