Fernsteuerung von MS Excel® durch FAMOS® per DDE-Befehl

Kann FAMOS® in MS Excel® per DDE mehrere Zellen verbinden (Visual Basic-Befehl "Selection.Merge")?

Durch die Verwendung der DDE Schnittstelle lassen sich eine Vielzahl von Programmen fernsteuern. Hierdurch ist eine weitreichende Automatisierung realisierbar. Leider entspricht die DDE Schnittstelle nicht dem aktuellen Stand der Entwicklung (…COM, DCOM, ActiveX, .net), weshalb sie in der Anwendung sehr rudimentär und nicht umfangreich dokumentiert ist.
Bei den angesprochenen aktuellen Technologien werden die jeweiligen Funktionalitäten in das aufrufende Programm eingebunden und es stehen dann je nach Freiheitsgrad der Objekte gewohnte Funktionalitäten zur Verfügung.

Es obliegt somit immer dem Programmierer ob über ein externes Programm auf 100% der üblichen Funktionen zugegriffen werden kann.

Die gleiche Einschränkung gilt bei der Verwendung der DDE Schnittstelle. Bei Excel® wurde als Befehlsgrundlage der Makro-Sprachumfang der Version 4.0 implementiert. Danach erfolgte keine Erweiterung mehr.

Das Verbinden von Zellen war in der Excel® Basic Version 4.0 nicht vorhanden. Die restlichen Funktionalitäten des Dialoges Zellen formatieren Registerkarte Ausrichten können über den Makrobefehl ALIGNMENT() realisiert werden.

Zur Verwendung der DDE Schnittstelle werden nur wenige Befehle verwendet.
        Kommando senden
        Daten/Text senden
        Daten/Text fragen
        DDE Kommunikation Initialisierung
        DDE Kommunikation Terminierung
Da FAMOS® die Kommunikation innerhalb der DDE Befehle verwaltet wird keine Initialisierung und Terminierung benötigt.

Das heisst mit den 3 DDE Befehlen wird die DDE Schnittstelle vollständig funktionell erschlossen
DDESende(,,)
DDESetze(,,,,)
DDEFrage(,,,)

(zzgl. Parametierung
DDETrenn()
SetOption("DDE.Text.NumFormat", "")
SetOption("DDE.Text.Delimeter", "~009")
SetOption("DDE.TimeOut", "3"))

Das grundlegende DDE- Problem ist die Benennung und der Syntax der Befehle in der jeweiligen Zielapplikation, da sie losgelöste Namen und Funktionalität erhalten. Die Befehle werden nicht von FAMOS® interpretiert und ausgeführt sondern nur an die Zielapplikation weitergereicht. Leider lassen sich die Befehle und Aktionen nicht in allen Programmen gleichwertig debuggen.

Damit man die neuen Funktionen der aktuellen Programme verwenden kann, bietet sich meiner Meinung nach eine Aufteilung der Arbeit an.
Die gewünschte Funktionalität innerhalb von Excel® als Makro definieren, da hier über VBA auf den aktuellen Stand der Objektorientierung zugegriffen werden kann. (keine festen Zellen-Bezüge definieren)

Sub Zellen_verbinden()
    Selection.Merge
End Sub

Dann innerhalb von FAMOS® nachdem die gewünschten Zellen selektiert wurden, das Makro starten.
_ApplikationsName="Excel"
_DateiName="DDE_Excel_Zellen_verbinden.xls"
_Befehl="[Select(~034R1C1:R1C3~034)]"
_Fehler=DDESende(_ApplikationsName,_DateiName,_Befehl)
_Befehl="[Run(~034Zellen_verbinden~034)]"
_Fehler=DDESende(_ApplikationsName,_DateiName,_Befehl)

Hierdurch vereint man die Möglichkeiten der Fernsteuerung mit den neuen Funktionalitäten der Zielprogramme und ist somit eine zukunftssichere Variante.

Fragen zu FAMOS®

Gerne beantworten wir Ihre Fragen zur Signalanalyse, Programmierung & Umgang mit FAMOS®!

Email: fragen(at)spamschutzbittelöschensinews.de

nach oben