Hallo liebe CX User
Ich versuche nun schon geraume Zeit eine Möglichkeit zu finden, um Programme (vorzugsweise Excel, Word usw.) über das COM oder OLE Objekt zu steuern,zu formatieren und Daten zwischen Clickexe und z.B Excel auszutauschen. Der 'OLEObjekt' Befehl wird da aber noch einige Zeit brauchen und da dachte ich mir, warum nicht gleich zusätzlich ein Windowsbordmittel verwenden, daß sich unkompliziert mit dem 'Starte' Befehl zur "Zusammenarbeit" mit Clickexe5 verwenden lässt. Mit den beigefügten Skriptzeilen lässt sich das nun realisieren. Wichtig ist dabei, das Clickexe5 zuerst mittels des 'OLEObjekt'-Befehls' in unserm Fall ein 'Excel Objekt' (Excel.Application) erstellt, um dann in Zeile 6 des Skriptes
mittels Powershell mit
$xl =[$] [Runtime.Interopservices.Marshal]::GetActiveObject('Excel.Application') das mittlerweile erstellte Excelobjekt abzufragen und sich anzueignen .
So kann eigentlich endlos(also bis das Clickexe Skript beendet wird) Interaktion zwischen Clickexe5 und Software wo das OLE- oder COM Objekt dies anbietet, hergestellt werden.
cX4Web Code
Was ist das?
1 *** Excel,Powershell Objektrelais (Noch nicht probiert, sollte aber auch mit Word;Powerpoint;Access usw. funktionieren
2
3 *** Hier wird mit dem OLEObjekt-Befehl ein Excel Applicationobjekt erstellt.
4 OLEObjekt ID='excelapp' Name='Excel.Application' in [erg]
5 *** Hier schaut die Powershell nach einem existierenden Excel Application Objekt.¶Wiird dies gefunden, wird Excel geöffnet. Sonst kommt ein Fehler.
6 Starte powershell.exe, warten bis beendet, Konsole, sende '$xl =[$] [Runtime.Interopservices.Marshal]::GetActiveObject('Excel.Application')¶$xl.visible=$true¶exit', verborgen
7 *** Nun wiederum erstellt Clickexe mit dem OLEObjekt-Befehl ¶in Excel 1 neues Arbeitsblatt mit Tabelle...
8 OLEObjekt ID='oWorkbook' Name='excelapp' Eigenschaft='Workbooks.add'
9 *** Hier nun wieder die Powershell, die mir im Tabellenblatt nun in der Zelle A1 einen¶Eintrag vornimmt.
10 Starte powershell.exe, warten bis beendet, Konsole, sende '$xl =[$] [Runtime.Interopservices.Marshal]::GetActiveObject('Excel.Application')¶$Sheet1 = $xl.worksheets.item(1)¶$Sheet...', verborgen
11 *** Der 'Warte' Befehl hält nun mein Excel-Objekt solange am "Leben" (und ich kann es auch immer wieder ansprechen), bis das Skript beendet wird.¶Man kann nun Excel nach 'Belieben' steuern. Hier ergeben sich nun tatsächlich sehr schöne Datenaustausch und Steuermöglichkeiten.
12 Warte Endlos (Warten auf zu behandelnde Ereignisse)
cX4Web Code: Einfach anklicken zum Kopieren und in click.EXE 5.0 einfügen
(12 Zeilen, cX 5.0.10.1, Lizenz: Pro)
Wie immer zur freien Verwendung, für Interessierte zum Nachschlagen, ausprobieren, usw.
Bei besonderem Lizenzerfordernis bitte im Volltestmodus ausführen
.
lg Christian