| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo |
| |
| Optimieren Sie Ihr Rechenzentrumsn, eine Pressemitteilung
|
Autor
|
Thema: DDE-Zugriff auf EXCEL (2214 mal gelesen)
|
StephanWörz Mitglied Maschinenbautechniker
Beiträge: 785 Registriert: 11.10.2000 exone - Win10 i9-12900K 3187MHz 32GB Ram nVidia RTX A5000 creo elements/direct V20.5.1.0 SolidPower V20.4 ModelSearch KeyShot 11 CADdoktor SX PHOENIX V11
|
erstellt am: 09. Apr. 2008 18:56 <-- editieren / zitieren --> Unities abgeben:
HAllo Miteinander! Ich habe mich eben mal mit dem "Hello Excel" Beispielcode von Claus's Homepage auseinander gesetzt! Klappt soweit alles ganz gut! Nun habe ich versucht einen Wert aus der Exceltabelle in eine Variable zu schreiben. Leider klemmt da was! Das schreiben der Werte in Excel tut:
Code: (defun set-cell(dde cell formula) (sd-dde-execute dde (format nil "[Formula(~S, ~S)]" formula cell)) );;set-cell
Das Auslesen der Werte tut nicht!
Code: (defun get-cell(dde cell) (setq ERGEBNIS (sd-dde-request dde cell)) );;get-cell
Ich habe mal beide Funktionen getraced und folgendes erhalten:
Code: The function SET-CELL was traced, but redefined. 1> (CLAUSBROD.DE::SET-CELL #S(FRAME2::Dnobiggrin:E-HANDLE FRAME2::Dnobiggrin:E-HANDLE-PTR 1275091328) "r10c2" 4) <1 (CLAUSBROD.DE::SET-CELL :NO_ERROR) 1> (CLAUSBROD.DE::GET-CELL #S(FRAME2::Dnobiggrin:E-HANDLE FRAME2::Dnobiggrin:E-HANDLE-PTR 1275091328) "r10c3") <1 (CLAUSBROD.DE::GET-CELL :ERROR)
Kurze Erklärung: Ich schreibe den Wert "4" in die Zelle "r10c2" in der Zelle "R10c3" ist eine Formel hinterlegt die "r10c2" mit 1000 multipliziert! Das Ergebnis möchte ich in LISP weiterverarbeiten! Wie gesagt, der Wert wird geschrieben und auch multipliziert. ... nur greifen kann ich ihn nicht.
Gibts Kollegen die "DDE-Erfahrung" haben und mir evt. einen Tipp geben? Danke Stephan
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 10. Apr. 2008 08:54 <-- editieren / zitieren --> Unities abgeben: Nur für StephanWörz
Um aus einem bestimmten Workbook per einfacher Zeilen/Spaltensyntax zu lesen, muss man sich mit dem Workbook (genauer: mit einem "Sheet" darin) verbinden und direkt mit ihm via DDE reden. Beispiel (ungetestet): Code:
(defun connect-to-sheet(workbook sheet) (oli:sd-dde-initiate "Excel" (format nil "[~A]~A" workbook sheet))) (setf sheet (connect-to-sheet "Book1" "Sheet1")) (print (oli:sd-dde-request sheet "r1c1"))
Claus
------------------ CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StephanWörz Mitglied Maschinenbautechniker
Beiträge: 785 Registriert: 11.10.2000 exone - Win10 i9-12900K 3187MHz 32GB Ram nVidia RTX A5000 creo elements/direct V20.5.1.0 SolidPower V20.4 ModelSearch KeyShot 11 CADdoktor SX PHOENIX V11
|
erstellt am: 10. Apr. 2008 14:05 <-- editieren / zitieren --> Unities abgeben:
Hallo Claus! Herzlichen Dank für die schnelle Hilfestellung! Leider muss ich zugegeben dass ich auch nach Stundenlangem rumprobieren nicht zum Ziel gekommen bin. Das ist wohl zuviel für mich! Ich bekomme einfach die Tabelle nicht verbunden?? Auch meine Funktion zum schließen der Mappe (100 Varianten probiert) will nicht greifen. Wie gesagt laden der Test.xls (Pfad am Kopf des LISP), und das schreiben des Wertes in eine Zelle geht! Das auslesen ist klaglos gescheitert. Auch das schließen der Mappe geht nicht?? Vielleicht hast Du ja Lust & Zeit (... oder sonst jemand) nochmal einen Blick darauf zu werfen! Danke nochmals! Stephan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 10. Apr. 2008 14:26 <-- editieren / zitieren --> Unities abgeben: Nur für StephanWörz
|
StephanWörz Mitglied Maschinenbautechniker
Beiträge: 785 Registriert: 11.10.2000 exone - Win10 i9-12900K 3187MHz 32GB Ram nVidia RTX A5000 creo elements/direct V20.5.1.0 SolidPower V20.4 ModelSearch KeyShot 11 CADdoktor SX PHOENIX V11
|
erstellt am: 10. Apr. 2008 14:44 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von clausb: Geht das Auslesen nicht, oder aber schon das Verbinden mit "[Mappe1]Tabelle1"? Bist Du sicher, dass man hier lokalisierte Namen verwenden muss?
NEIN! Bin mir überhaupt nicht sicher !! Ich dachte halt so wie es Excel mir sagt wirds passen? Wenn Ich meine TEST.xls lade dann heußt mein workbook (Mappe) doch "TEST", oder nicht???? Mein (Sheet) heißt (laut VBA-Editor) "Tabelle1". Keine Ahnung was ich hier noch machen kann! Das Verbinden scheitert auch schon! In dieser Funktion möchte ich mich verbinden:
Code: (defun get-value-from-excel () ;; (setq Sheethandle (oli:sd-dde-initiate "Excel" "[Mappe1]Tabelle1" )) ;; oder so ??? (let ((Sheethandle (oli:sd-dde-initiate "Excel" "[Mappe1]Tabelle1" ))) (if (eq :error Sheethandle) nil dde) );;let (display (format nil "Sheethandle : ~A" Sheethandle )) ;; get value (print (oli:sd-dde-request Sheethandle sheet) "r10c3") );;get-result-from-excel
Der Trace spuckt mir hierzu dann folgendes aus:
Code: LISP-Fehler: :ERROR is not of type FRAME2::Dnobiggrin:E-HANDLE.
... leider keinen Plan mehr! Danke trotzdem für die hurtige Rückmeldung! Stephan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 10. Apr. 2008 15:43 <-- editieren / zitieren --> Unities abgeben: Nur für StephanWörz
Einfacher Test in einem englischen Excel 2007:
- "Sheet1" umbenennen in "Tabelle1", dann Default-Workbook als "Mappe1.xslx" abspeichern
- Dann von Modeling aus verbinden mit (oli:sd-dde-initiate "Excel" "[Mappe1.xslx]Tabelle1")
Das tat bei mir wie erwartet. Claus ------------------ CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/
[Diese Nachricht wurde von clausb am 10. Apr. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StephanWörz Mitglied Maschinenbautechniker
Beiträge: 785 Registriert: 11.10.2000 exone - Win10 i9-12900K 3187MHz 32GB Ram nVidia RTX A5000 creo elements/direct V20.5.1.0 SolidPower V20.4 ModelSearch KeyShot 11 CADdoktor SX PHOENIX V11
|
erstellt am: 10. Apr. 2008 17:02 <-- editieren / zitieren --> Unities abgeben:
Nun bin ich ein kleines Stückchen weiter Die Verbindung kommt wohl zustande! Leider bekomme ich den Zellwert nicht ausgelesen. Folgende Funktion setzte ich im Moment ein:
Code: (defun get-value-from-excel (Cell);; Dies in der Eingabezeile: (display (oli:sd-dde-initiate "Excel" "[Mappe1]Tabelle1")) ;; bringt auf jeden Fall ein Ergebnis (#S(DDE-HANDLE DDE-HANDLE-PTR 1929382272)) ;; Bedingung: Mappe1/Tabelle1 muss geladen sein!!! (setq Sheethandle (oli:sd-dde-initiate "Excel" "[Mappe1]Tabelle1")) (display (format nil "Sheethandle : ~A" Sheethandle )) ;das tut erst mal!!!! ;; get value (setq WERT (oli:sd-dde-request Sheethandle (format nil "~S" cell))) (display WERT) );;get-value-from-excel
Ich spreche das Workbook ohne Extension an! Mit Mappe1.xls gings nicht! Aufgerufen wird das ganze mit:
Code: (get-value-from-excel "r10c3")
Die Beschreibung von SD-DDE-REQUEST im IKit sagt mir auch nicht sehr viel. Ich vermisse hier ein paar konkrete Beispiele... DAnke für die Bemühungen. Ich arbeite übrigens mit Excel 2000. Spielt das evt. eine Rolle? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 10. Apr. 2008 17:22 <-- editieren / zitieren --> Unities abgeben: Nur für StephanWörz
Zitat: Original erstellt von StephanWörz: Ich spreche das Workbook ohne Extension an! Mit Mappe1.xls gings nicht!
Ich vermute, dass sich der Workbook-Name nach dem Abspeichern unter einem Namen wie Mappe1.xls intern ändert. Was genau geht denn jetzt schief? Bekommst Du eine Fehlermeldung? Den falschen Wert? Was passiert? Zitat:
Die Beschreibung von SD-DDE-REQUEST im IKit sagt mir auch nicht sehr viel. Ich vermisse hier ein paar konkrete Beispiele...
Das DDE-Protokoll sowie die speziellen DDE-Services von Applikationen wie Excel sollten meiner Meinung nach auch nicht unbedingt von der IKIT-Doku abgedeckt werden. Dazu gibt es da draussen im Netz (zum Beispiel bei Microsoft) Quellen, die weit besser und vollständiger darüber informieren, als wir es je könnten. Ansonsten gibt es ja auch immer noch die Hinweise auf meiner Website - und hier im Forum. Claus
------------------ CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 10. Apr. 2008 17:25 <-- editieren / zitieren --> Unities abgeben: Nur für StephanWörz
Zitat:
(setq WERT (oli:sd-dde-request Sheethandle (format nil "~S" cell)))
Wieso verwendest Du hier (format)? Und warum dann auch noch ein (format) mit Formatangabe ~S, die bei Strings zusätzliche Anführungszeichen um den String herum produziert? Vielleicht versteht Excel ja sowas nicht? Probier's doch einfach mit
Code:
(print (oli:sd-dde-request Sheethandle cell))
Claus ------------------ CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/
[Diese Nachricht wurde von clausb am 10. Apr. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StephanWörz Mitglied Maschinenbautechniker
Beiträge: 785 Registriert: 11.10.2000 exone - Win10 i9-12900K 3187MHz 32GB Ram nVidia RTX A5000 creo elements/direct V20.5.1.0 SolidPower V20.4 ModelSearch KeyShot 11 CADdoktor SX PHOENIX V11
|
erstellt am: 11. Apr. 2008 08:33 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von clausb: Wieso verwendest Du hier (format)? Und warum dann auch noch ein (format) mit Formatangabe ~S, die bei Strings zusätzliche Anführungszeichen um den String herum produziert? Vielleicht versteht Excel ja sowas nicht?
... dachte halt die Anführungszeichen brauchts! Zuerst hatte ich auch mit ~A getestet. Zitat:
Probier's doch einfach mit
Code:
(print (oli:sd-dde-request Sheethandle cell))
Negativ! Tut halt nicht!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StephanWörz Mitglied Maschinenbautechniker
Beiträge: 785 Registriert: 11.10.2000 exone - Win10 i9-12900K 3187MHz 32GB Ram nVidia RTX A5000 creo elements/direct V20.5.1.0 SolidPower V20.4 ModelSearch KeyShot 11 CADdoktor SX PHOENIX V11
|
erstellt am: 11. Apr. 2008 08:59 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von clausb: Das DDE-Protokoll sowie die speziellen DDE-Services von Applikationen wie Excel sollten meiner Meinung nach auch nicht unbedingt von der IKIT-Doku abgedeckt werden. Dazu gibt es da draussen im Netz (zum Beispiel bei Microsoft) Quellen, die weit besser und vollständiger darüber informieren, als wir es je könnten.
Ja, da hab ich auch schon kräftig gestöbert! Leider ist das alles ein wenig zu kryptisch für mich. Mit dem Englischen hab ichs auch nicht so! Man findet wirklich einige Infos wenn man nach "DDE EXCEL" googelt. Leider lässt sich das oft nicht übertragen (oder vielleicht doch?). Zitat:
Ansonsten gibt es ja auch immer noch die Hinweise auf meiner Website - und hier im Forum.
Das ist auf jeden Fall das gescheiteste was ich überhaupt zu diesem Thema gefunden habe! Danke! Ich bin halt nur ein einfacher Maschinenbautechniker der hier bei uns die CAD/PDM-Administration übernommen hat und sich nun immer mehr mit den Wünschen der Chefs auseinandersetzen muss. Schön ist dass ich die Zeit bekomme um hier intensiv mit LISP & Co. zu arbeiten. Ist halt frustrierend wenn die Projekte immer wieder ins stocken geraten. Ich hoffe ich kann auch bald mal was weitergeben was nicht nur bei uns eine Hilfe ist. Hab das Forum hier schon sehr in Anspruch genommen... Die Aktuelle Aufgabe (vielleicht interessiert es ja jemanden): Wir haben viele Bauteile die eine Oberflächenbehandlung erfahren welche einen Materialauftrag mit sich bringt. Wird ein Bauteil z.B. chemisch vernickelt so werden je nach Verfahren 10-30µm aufgetragen. Sind in diesem Bauteil Passbohrungen drin, so muss der spätere Materialauftrag bei der Ferigung berücksichtigt werden. Nun haben wir eine Excelmappe die sämtliche Passungen und die in Frage kommenden Oberflächenbehandlungen berücksichtigt. D.h. in diesem Formular wird der DURCHMESSER, die PASSUNG, die OBERFLÄCHENBEHANDLUNG gewählt. Man hat dann direkt Zugriff auf die entsprechenden oberen & unteren Abmaße der Passung und der Bohrung vor der Öberflächenbehandlung. Das sind ziemlich viele Zahlen, die ich nicht nochmal in LISP abbilden möchte. Später möchte ich das ganze dann mit der BOHRUNGSTABELLE von CAD.DE verheiraten. D.H. in der Tabelle steht dann zusätzlich noch drin mit welchen Abmaßen die Bohrung gefertigt werden muss damit nach dem vernickeln die PASSUNG passt! Die Information über die Oberflächenbehandlung greife ich vom der gewählten Ansicht zugehörigen 3D-Modell ab (ist als Attribut vorhanden)... Also für mich eine ganz schöne Herausforderung... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 11. Apr. 2008 12:25 <-- editieren / zitieren --> Unities abgeben: Nur für StephanWörz
|
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 11. Apr. 2008 14:26 <-- editieren / zitieren --> Unities abgeben: Nur für StephanWörz
Zitat: Original erstellt von StephanWörz: Leider ist das alles ein wenig zu kryptisch für mich. Mit dem Englischen hab ichs auch nicht so! Man findet wirklich einige Infos wenn man nach "DDE EXCEL" googelt. Leider lässt sich das oft nicht übertragen (oder vielleicht doch?).
Keine Frage, DDE ist zuweilen kryptisch - einerseits deswegen, weil es veraltete Technologie ist, zu der es Dokumentation vor allem aus Zeiten bis Windows 95 gibt; zum anderen, weil jeder DDE-Server für sich entscheidet, welche Funktionalität er über DDE verfügbar macht und wie. Sprich: Man muss nicht nur die paar DDE-Grundfunktionen lernen, sondern auch das Schnittstellenangebot der jeweiligen Zielapplikationen (hier: Excel) verstehen. Es ist diese Teilaufgabe, die in der Praxis die meisten Schwierigkeiten macht. Was Du im Netz zu Funktionalität in Excel findest, die über DDE erreichbar ist, lässt sich im Regelfall fast mechanisch und 1:1 für CoCreate Modeling übertragen. Im wesentlichen braucht's nur eine triviale Syntaxmassage. Beispiel: Unter http://www.wer-weiss-was.de/theme18/article199521.html (deutsche Quelle!) findet man den folgenden VB-Code: Code:
Dim DDEKanal As Long Dim TelNummer As StringDDEKanal = DDEInitiate("MyApp", "Nummer") TelNummer = Application.DDERequest(DDEKanal, "txtNummer")
In Lisp wird daraus:
Code:
(setf DDEKanal (oli:sd-dde-initiate "MyApp" "Nummer")) (setf TelNummer (oli:sd-dde-request DDEKanal "txtNummer"))
Unter http://www.filemaker-magazin.de/fmmforum/51015.html (deutsche Quelle!) findet man weitere Hinweise zur verfügbaren Excel-Funktionalität. Eine andere deutsche Quelle ist http://www.ws-unternehmensberatung.de/tips/tip-excel1.html. Claus ------------------ CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/
[Diese Nachricht wurde von clausb am 11. Apr. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 12. Apr. 2008 09:59 <-- editieren / zitieren --> Unities abgeben: Nur für StephanWörz
Zitat: Original erstellt von clausb: Sprich: Man muss nicht nur die paar DDE-Grundfunktionen lernen, sondern auch das Schnittstellenangebot der jeweiligen Zielapplikationen (hier: Excel) verstehen. Es ist diese Teilaufgabe, die in der Praxis die meisten Schwierigkeiten macht.Was Du im Netz zu Funktionalität in Excel findest, die über DDE erreichbar ist, lässt sich im Regelfall fast mechanisch und 1:1 für CoCreate Modeling übertragen. Im wesentlichen braucht's nur eine triviale Syntaxmassage.
Weiterer Tipp zu diesem Thema: Wenn ich im Netz irgendwo Code zum Beispiel in VB oder VBA finde, nehme ich manchmal einfach diesen Code und passe mir ihn zunächst einmal in VB(A) an, bis er für meinen Zweck funktioniert. In einem zweiten Schritt kann man dann die triviale Syntaxumwandlung nach Lisp erledigen und den Code in CoCreate Modeling abschliessend testen. Das hilft, funktionalen von syntaktischen Problemen zu treffen und einzeln zu behandeln. Weiterer Vorteil: Wenn es ein funktionales Problem gibt, dann tritt er bei dieser Vorgehensweise schon im VB(A)-Code auf, und dann hat man die Auswahl unter zig VB-spezifischen Programmierforen, Onlinehilfen, Tutorials et cetera, um sich Hilfe zu holen. Claus
------------------ CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StephanWörz Mitglied Maschinenbautechniker
Beiträge: 785 Registriert: 11.10.2000 exone - Win10 i9-12900K 3187MHz 32GB Ram nVidia RTX A5000 creo elements/direct V20.5.1.0 SolidPower V20.4 ModelSearch KeyShot 11 CADdoktor SX PHOENIX V11
|
erstellt am: 14. Apr. 2008 10:03 <-- editieren / zitieren --> Unities abgeben:
Guten morgen, herzlichen Dank für die viele Mühe die Du in diesem Thread aufbringst. Ich habe das ganze jetzt auch mal mit Excel2003 versucht. Das Resultat ist das gleiche: - DDE-Handle wird erzeugt - DDE-REQUEST meldet :ERROR Zitat: Ich vermute, dass sich der Workbook-Name nach dem Abspeichern unter einem Namen wie Mappe1.xls intern ändert.
... hat sich so bestätigt In meinen Excel-Optionen habe ich auch nix gefunden was irgendwie stören könnte!
Danke nochmals, Stephan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 14. Apr. 2008 10:22 <-- editieren / zitieren --> Unities abgeben: Nur für StephanWörz
|
StephanWörz Mitglied Maschinenbautechniker
Beiträge: 785 Registriert: 11.10.2000 exone - Win10 i9-12900K 3187MHz 32GB Ram nVidia RTX A5000 creo elements/direct V20.5.1.0 SolidPower V20.4 ModelSearch KeyShot 11 CADdoktor SX PHOENIX V11
|
erstellt am: 14. Apr. 2008 10:25 <-- editieren / zitieren --> Unities abgeben:
|
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 14. Apr. 2008 10:29 <-- editieren / zitieren --> Unities abgeben: Nur für StephanWörz
|
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 14. Apr. 2008 10:38 <-- editieren / zitieren --> Unities abgeben: Nur für StephanWörz
Zitat: Original erstellt von clausb: Alles klar, dann weiss ich, welche Version ich bei mir zum Vergleich hernehmen muss.Claus
Habe jetzt nochmal den Test mit 15.50B wiederholt (15.50A war gerade nicht zur Hand). Als DDE-Server lief Excel 2007, hier habe ich keine ältere Version. Um die in Deinem Code erwartete Ausgangslage herzustellen, habe ich in Excel 2007 'Sheet1' in 'Tabelle1' umbenannt, dann habe ich das aktuelle Workbook als "TEST1.xls" abgespeichert. Damit lief Dein Code ohne Änderungen sauber durch. Es gab von 15.50A zu 15.50B allerdings ein paar DDE-Änderungen. Ich werde also nochmal uminstallieren und dann den Test in 15.50A wiederholen. Claus
------------------ CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 14. Apr. 2008 11:03 <-- editieren / zitieren --> Unities abgeben: Nur für StephanWörz
Zitat: Original erstellt von clausb: Es gab von 15.50A zu 15.50B allerdings ein paar DDE-Änderungen. Ich werde also nochmal uminstallieren und dann den Test in 15.50A wiederholen.
Habe den Test jetzt auch mit 15.50A wiederholt - erfolgreich. Damit haben wir nur noch einen Unterschied: Excel 2007 vs. Excel 2003. Vielleicht würde es sich lohnen, wenn Du den Test einmal in VB (oder irgendeiner anderen DDE-fähigen Sprache) wiederholst, also ungefähr so: Code:
Dim dde As Long Dim foo As Stringdde = DDEInitiate("Excel", "[TEST.xls]Tabelle1") foo = Application.DDERequest(dde, "r1c1")
Claus ------------------ CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/
[Diese Nachricht wurde von clausb am 14. Apr. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StephanWörz Mitglied Maschinenbautechniker
Beiträge: 785 Registriert: 11.10.2000 exone - Win10 i9-12900K 3187MHz 32GB Ram nVidia RTX A5000 creo elements/direct V20.5.1.0 SolidPower V20.4 ModelSearch KeyShot 11 CADdoktor SX PHOENIX V11
|
erstellt am: 22. Apr. 2008 08:59 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von clausb: Vielleicht würde es sich lohnen, wenn Du den Test einmal in VB (oder irgendeiner anderen DDE-fähigen Sprache) wiederholst, also ungefähr so:
... konnte ich leider nicht realisieren! D.h. der Test ist nicht gescheitert, ich habs einfach nicht hinbekommen! Ich habe trotzdem mal an meinem Tool weitergebaut! Wäre nett wenn es mal getestet würde ( Claus?). Gruß Stephan Es müsste soweit tun. Es kommen halt immer noch keine Werte aus Excel zurück. Leider habe ich Excel 2007 nicht ur Verfügung. Die Excel sollte in D:\ liegen oder im Code entsprechend anpassen (Zeile 40). Die Oberflächenbehandlung habe ich mal fix eingestellt. Bei mir wird diese aus einem Attribut des Teils ausgelesen. Getestet habe ich mit V15.50A, gespeichert habe ich das Bündel in V140.00. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Schwerti Mitglied
Beiträge: 13 Registriert: 20.01.2006 Creo Elements Direct Vers. 17.0
|
erstellt am: 22. Apr. 2008 17:01 <-- editieren / zitieren --> Unities abgeben: Nur für StephanWörz
Hallo Stephan, habe zwar Dein Makro nicht probiert, aber was das DDE-Problem betrifft, habe ich (durch probieren) folgendes festgestellt: Wenn man eine deutsche Excel-Version hat, so muss man wohl für Zeile und Spalte anstatt "r1c1" "z1s1" eingeben. Dann hat es zumindest bei mir funktioniert. ABER: Hat nur funktioniert im Zusammenspiel zwischen OSM 2005 und Excel 2003. Nicht funktionieren tut es bei OSM 2007 und Excel 2003. Frage: Was muss man tun, damit es auch in der Kombination OSM 2007 + Excel 2003 funktioniert (und kein neueres Excel verfügbar ist)? Viele Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 23. Apr. 2008 01:10 <-- editieren / zitieren --> Unities abgeben: Nur für StephanWörz
|
StephanWörz Mitglied Maschinenbautechniker
Beiträge: 785 Registriert: 11.10.2000 exone - Win10 i9-12900K 3187MHz 32GB Ram nVidia RTX A5000 creo elements/direct V20.5.1.0 SolidPower V20.4 ModelSearch KeyShot 11 CADdoktor SX PHOENIX V11
|
erstellt am: 23. Apr. 2008 06:53 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von Schwerti: ...so muss man wohl für Zeile und Spalte anstatt "r1c1" "z1s1" eingeben. Dann hat es zumindest bei mir funktioniert.
Das schreiben IN DIE ZELLE funktioniert ja wunderbar mit "R1C1" !!! Keine Ahnung wo der Fehler liegen könnte Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StephanWörz Mitglied Maschinenbautechniker
Beiträge: 785 Registriert: 11.10.2000 exone - Win10 i9-12900K 3187MHz 32GB Ram nVidia RTX A5000 creo elements/direct V20.5.1.0 SolidPower V20.4 ModelSearch KeyShot 11 CADdoktor SX PHOENIX V11
|
erstellt am: 24. Apr. 2008 08:23 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von Schwerti:
Wenn man eine deutsche Excel-Version hat, so muss man wohl für Zeile und Spalte anstatt "r1c1" "z1s1" eingeben. Dann hat es zumindest bei mir funktioniert. Viele Grüße
Der absolute Hammer! Folgendes läuft bei mir ab (OSM V15.50A & Excel 2000 SP3): Das schreiben eines Wertes IN DIE ZELLE tut mit "r1c1" Das leseen eines Wertes AUS DER ZELLE tut mit "z1s1" ... das verstehe wer will!! Egal!! Wieder ein Stückchen weiter gekommen!!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
Beiträge: 2219 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.4780 ● Drafting V17~V20.7 ● Modeling V17~V20.7 ● Windchill 12.1.2.6 ● UWGM Client 13.0.0.1
|
erstellt am: 24. Apr. 2008 20:46 <-- editieren / zitieren --> Unities abgeben: Nur für StephanWörz
Zitat: Original erstellt von StephanWörz: Der absolute Hammer! Folgendes läuft bei mir ab .... Das schreiben eines Wertes IN DIE ZELLE tut mit "r1c1" Das leseen eines Wertes AUS DER ZELLE tut mit "z1s1"
Das spricht ganz deutlich dafuer, das man in dem vorhanden code in den Funktionen get-cell / set-cell cell nicht als string uebergibt, sondern als mini liste oder als x,y. Die jeweilige Funktion wuerde cell dann als (format nil "r~Dc~D" rol col) bzw. (format nil "z~Ds~D" rol col) umsetzen, also eigentlich (format nil "z~Ds~D" (car cell) (cadr cell)). Dann haette man dieses suspekte Problem gekapselt und muss spaeter dann nur eine einzige Zeile aendern. (get-cell '(2 (4 10))) waere auch huebsch. -> Reihe 2 Spalte D bis J also excel:[D2:J2] -> eine Liste kommt zurück.. ähmmm.. ok. und tschüß.
------------------ ● Seamonkey Firefox Thunderbird Seamonkey auf deutsch ● OSD Hilfeseite (de) / help page (en) ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 25. Apr. 2008 02:50 <-- editieren / zitieren --> Unities abgeben: Nur für StephanWörz
|