Autor
|
Thema: Daten per DDEPoke von Excel in PS-Variable schreiben? (2776 mal gelesen)
|
plantsimulant Mitglied
Beiträge: 1 Registriert: 19.05.2011
|
erstellt am: 19. Mai. 2011 13:37 <-- editieren / zitieren --> Unities abgeben:
Hallo, hoffentlich könnt ihr mir einen Tipp geben: Ich würde gern aus Exceldaten direkt in Variablen in PS schreiben, doch leider scheint es nicht zu funktionieren... hier ist mein Ansatz in Excel: Code: Dim kanal As Longkanal = DDEInitiate("eM-Plant", "System") DDEPoke kanal, ".modelle.netzwerk.Variable1", 15 DDETerminate (kanal) End Sub
Leider funktioniert das ganze nicht so wie es soll... in Plant wird der Wert der Variable nicht verändert. DDE-Hotlinks habe ich aktiviert, trotzdem funktioniert es nicht... Ist DDE nur für Verbindungen aus Plant Simulation geeignet, oder was mache ich falsch? Laut dem Buch von Steffen Bangsow steht "System" für (Informationen über Plant Simulation können abgefragt werden) Ich habe es gerade aber auch nochmal mit "Data" probiert (lt. Bangsow dient der Parameter "Data" zum [...] Auslesen von globalen Variablen) siehe: http://www.google.de/search?tbm=bks&tbo=1&q=ddepoke+plant+simulation&btnG=Nach+B%C3%BCchern+suchen Leider funktioniert es auch mit dem Typ Data nicht, die Zahl 15 in die Variable zu schreiben... auch ein umwandeln der Zahl in einen String funktioniert nicht (DDE-Kommunikation soll wohl komplett als String ablaufen)... Was mach ich falsch bzw. wie kann ich die Variable von Excel aus setzen? Danke im voraus Plantsimulant Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bon Simul Mitglied Simulant
Beiträge: 1250 Registriert: 08.08.2011 Plant Simulation 10.1, 11 ff Professional
|
erstellt am: 08. Aug. 2011 22:02 <-- editieren / zitieren --> Unities abgeben: Nur für plantsimulant
|
Bon Simul Mitglied Simulant
Beiträge: 1250 Registriert: 08.08.2011 Plant Simulation 10.1, 11 ff Professional
|
erstellt am: 09. Aug. 2011 20:36 <-- editieren / zitieren --> Unities abgeben: Nur für plantsimulant
Es funktioniert am einfachsten von Plant Simulation aus. Das Setzen einer Variable aus einer Excel Zelle würde wie folgt aussehen: Code:
is channel:integer; val:string; do channel:=DDEConnect("Excel","Tabelle1"); val:=DDERequest(channel,"Z1S1"); -- Zelle in Z1S1-Schreibweise variable:=omit(val,strlen(val)-1,2); --Plant simulation variable setzen DDEDisconnectAll; end;
Excel liefert einen Umbruch mit, den müssen Sie abschneiden (omit...) Rückgabe ist immer string.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CWs Mitglied
Beiträge: 20 Registriert: 03.04.2012
|
erstellt am: 03. Apr. 2012 12:46 <-- editieren / zitieren --> Unities abgeben: Nur für plantsimulant
Ich habe ein ähnliches Problem. Ich muss aber statt einer einzelnen Variable ein komplettes Arbeitsblatt aus Excel nach PS in eine Liste kopieren. Wenn ich einfach über DDEExecute eine ensprechende Methode aufrufe klappt das auch sehr gut. Problem ist jetzt, dass es sich um 5 Arbeitsblätter handelt und ich für jedes eine neue Methode anlegen müsste. Das ist irgendwie unsauber. Statt dessen würde ich lieber mit dem DDEpoke arbeiten. Das klappt aber irgendwie nicht richtig. Code: Dim kanal As Long If CheckBox_Programm = True Then kanal = DDEInitiate("eM-Plant", "Data") DDEPoke kanal, ".Modelle.Netzwerk.Liste", "Tabelle1" DDETerminate (kanal) ...
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bon Simul Mitglied Simulant
Beiträge: 1250 Registriert: 08.08.2011 Plant Simulation 10.1, 11 ff Professional
|
erstellt am: 03. Apr. 2012 20:52 <-- editieren / zitieren --> Unities abgeben: Nur für plantsimulant
Ich denke, in Ihrem Fall wäre die Simtalk-Methode: Code:
<tabelle>.leseExcelDatei(pfad,tabellenblatt,...)
besser geeignet. Die Methode liest komplette Excel-Tabellen in Plant Simulation Tabellen. Sie können jeweils die Namen der Tabellenblätter mit übergeben und brauchen so nur wenige Zeilen Kode.siehe Hilfe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CWs Mitglied
Beiträge: 20 Registriert: 03.04.2012
|
erstellt am: 11. Apr. 2012 12:36 <-- editieren / zitieren --> Unities abgeben: Nur für plantsimulant
|
DennisL Mitglied
Beiträge: 38 Registriert: 28.11.2011
|
erstellt am: 11. Apr. 2012 13:13 <-- editieren / zitieren --> Unities abgeben: Nur für plantsimulant
|