Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  TM - Plant Simulation
  Daten per DDEPoke von Excel in PS-Variable schreiben?

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
Autor Thema:  Daten per DDEPoke von Excel in PS-Variable schreiben? (2770 mal gelesen)
plantsimulant
Mitglied


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

Beiträge: 1
Registriert: 19.05.2011

erstellt am: 19. Mai. 2011 13: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

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 Long

kanal = 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


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

Beiträge: 1250
Registriert: 08.08.2011

Plant Simulation 10.1, 11 ff Professional

erstellt am: 08. Aug. 2011 22:02    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 plantsimulant 10 Unities + Antwort hilfreich

Das Thema muss "Data" sein (DDEInitiate). Die Daten müssen als dritter Übergabeparameter übergeben werden (als Text). Sie müssen dafür in Excel die Daten umwandeln (Methode CStr).

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

Bon Simul
Mitglied
Simulant


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

Beiträge: 1250
Registriert: 08.08.2011

Plant Simulation 10.1, 11 ff Professional

erstellt am: 09. Aug. 2011 20:36    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 plantsimulant 10 Unities + Antwort hilfreich

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



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

Beiträge: 20
Registriert: 03.04.2012

erstellt am: 03. Apr. 2012 12:46    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 plantsimulant 10 Unities + Antwort hilfreich

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


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

Beiträge: 1250
Registriert: 08.08.2011

Plant Simulation 10.1, 11 ff Professional

erstellt am: 03. Apr. 2012 20:52    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 plantsimulant 10 Unities + Antwort hilfreich

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



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

Beiträge: 20
Registriert: 03.04.2012

erstellt am: 11. Apr. 2012 12:36    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 plantsimulant 10 Unities + Antwort hilfreich

Die habe ich genutzt. Leider ist der DDEpoke-Befehl zu aufwendig. Vielen Dank!

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

DennisL
Mitglied



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

Beiträge: 38
Registriert: 28.11.2011

erstellt am: 11. Apr. 2012 13:13    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 plantsimulant 10 Unities + Antwort hilfreich

Für einzelene Werte, imo:
Wenn ich mich recht erinnere, darf die Zelle aus der der Wert gepoked werden soll nicht angewählt sein.

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