LabVIEWForum.de - Statemachine mit Excel

LabVIEWForum.de

Normale Version: Statemachine mit Excel
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hey,

wollte mal eine Sache zur Statemachine fragen. Ich öffne in einem Zustand mit ActiveX eine Excel Datei. Nun möchte ich es erreichen, dass der nächste Zustand erst erreicht wird, wenn ich Excel wieder schließe. Z.zt. Öffnet Excel und der nächste Zustand startet sofort und wartet nicht bis Excel geschlossen wird.

Danke schonmal für eure Hilfe.
H_S
' schrieb:wollte mal eine Sache zur Statemachine fragen ...wie sieht diese aus?...Komplexität...
Ich öffne in einem Zustand mit ActiveX eine Excel Datei. ...an dem Beispielcode könnte man einschätzen, ob ein Callback Event hier das richtige wäre...
Nun möchte ich es erreichen, dass der nächste Zustand erst erreicht wird, wenn ich Excel wieder schließe ... oder ob ein Zugriffsversuch mit Auswertung des Errorclusters ...
Z.zt. Öffnet Excel und der nächste Zustand startet sofort und wartet nicht bis Excel geschlossen wird. ...oder ein anderer Handshake-Mechanismus (Excel schreibt beim Schließen) reicht
Hey,

so, hier hab ich mal ein Beispiel geschrieben wie ich das meine mit simplen weiteren cases. Sonst wird das zu unübersichtlich wenn ich mein Gesamtprogramm einfüge.
Im ersten case wird Excel geöffnet und nun soll der nächste Zustand erst starten, wenn in Excel der Anwender das Fenster schließt.
Wie kann ich so etwas realisieren?
LG

Lv86_img
Ich hab' mir das Bsp. nicht angeschaut, aber Du könntest ja den Benutzer im einfachsten Fall auch fragen, ob er Excel bearbeitet und geschlossen hat und dann erst weitermachen.
Wenn nicht, dann frag' doch einfach die aktiven Windows-Prozesse ab und wenn da EXCEL.EXE drin steht wartest Du, wenn es beendet wurde und nicht mehr drin steht, machst Du weiter.

Hier ein Bsp., um die Prozesse anzuzeigen:
[attachment=20109]
Lv85_img

Gruß Markus
Ich würde nicht in dem Excel öffne State bleiben, bis der User Excel wieder beendet. Sondern Excel öffnen und wieder in den Idle State wechseln. Ok, evtl. hast du das nur in diesem Bsp. nicht gemacht.Big Grin

Um mitzubekommen, wenn Excel (das Workbook das du geöffnet hast) geschlossen wird, kannst du mit Ereignis-Callback auf das "WorkbookBeforeClose" reagieren.

Hmm, keine Ahnung wie man dann "richtig" weiter machen sollte, ich hab einfach in dem CallbackVI eine Globale Variable (BeforeClose) auf True gesetzt und im Idle State ausgewertet.

Ist BeforeClose = True, dann wird der nächste State angesprungen, ist BeforeClose = False bleiben wir im Idle State.

Lv86_img[attachment=20113]
Lv86_img[attachment=20114]
Lv86_img[attachment=20112]



Hoffe es hilft dir weiter.

Gruß SeBa
Referenz-URLs