OLE Automation

<< Click to Display Table of Contents >>

OLE Automation

Mit Hilfe von OLE Automation können geeignete Applikationen (zum Beispiel die Textverarbeitung TextMaker oder die Tabellenkalkulation PlanMaker) mit SoftMaker Basic-Scripts gesteuert werden.

Tipp: Ausführliche Informationen zum Programmieren von TextMaker und PlanMaker finden Sie in den Kapiteln BasicMaker und TextMaker sowie BasicMaker und PlanMaker.

Was ist ein OLE Automation-Objekt?

Jedes für OLE-Automation geeignete Programm stellt bestimmte Objekte zur Verfügung. Die Art dieser Objekte hängt von der Applikation ab. Eine Textverarbeitung wie TextMaker bietet beispielsweise Objekte wie die derzeit geöffneten Dokumente oder die Formatierung des derzeit markierten Textes an.

Ein OLE Automation-Objekt bietet zwei Arten von Zugriffsmöglichkeiten:

Die Eigenschaften (Properties) von OLE Automation-Objekten sind Werte, die gelesen und/oder geschrieben werden können und einen bestimmten Aspekt des Objekts beschreiben. Ein Dokumentfenster einer Textverarbeitung hat zum Beispiel die Eigenschaften Name (des darin geöffneten Dokuments), Breite und Höhe des Fensters usw.

Methoden sind Funktionen, die eine Aktion an einem OLE Automation-Objekt auslösen. Ein in der Applikation geöffnetes Dokument hat zum Beispiel eine Methode zum Speichern des Dokuments.

Zugriff auf OLE Automation-Objekte

Um auf ein OLE Automation-Objekt zuzugreifen, muss zunächst eine Variable vom Typ Object deklariert werden.

Beispiel:

Dim MyObj As Object

Dann muss diese mit der Applikation "verbunden" werden. Dazu gibt es zwei Funktionen: Während CreateObject die Applikation nötigenfalls automatisch startet, kann GetObject nur eine Verbindung zu einer bereits gestarteten Applikation herstellen.

Beispiel:

Set MyObj = CreateObject("TextMaker.Application")

Die Variable MyObj enthält nun eine Referenz auf das Haupt-OLE Automation-Objekt der Applikation, dessen Name übrigens immer Application lautet. Über die Punktnotation – zum Beispiel MyObj.Application.Documents – können Sie auf die untergeordneten Objekte zugreifen (siehe auch nächster Abschnitt).

Wenn die OLE Automation-Verbindung nicht mehr benötigt wird, sollte die Variable wieder von dem Objekt getrennt werden, indem sie auf Nothing gesetzt wird:

Beispiel:

Set MyObj = Nothing ' Variable vom Objekt trennen

Eigenschaften

Um auf die Eigenschaften eines Objekts zuzugreifen, wird die Punktnotation Objekt.Eigenschaft verwendet.

Beispiel:

x = MyObj.Application.Width ' Breite des Programmfensters auslesen

Oder:

MyObj.Application.Width = 5 ' Breite des Programmfensters setzen

Methoden

Zum Aufrufen von Methoden wird ebenfalls die Punktnotation eingesetzt: Objekt.Methode

Beispiel:

MyObj.Application.Quit ' Applikation beenden

Sammlungen verwenden

Neben einfachen Objekten gibt es auch Sammlungen (Collections) von Objekten.

TextMaker bietet beispielsweise die Sammlung Documents (eine Sammlung aller geöffneten Dokumente) an. Eine Sammlung ist selbst ein Objekt, das meist als Eigenschaft ihres Elternobjekts zugänglich ist.

Um auf alle Elemente einer Sammlung zuzugreifen, kann man die For Each Next-Anweisung benutzen.

Alle Sammlungen bieten standardmäßig die folgenden Eigenschaften und Methoden:

CountLiefert die Anzahl der Elemente (nur lesbar).
Item(i)Liefert das i-te Element.
AddFügt der Sammlung ein neues Objekt hinzu.

Beispiel

Abschließend ein Beispiel, das die Anwendung von OLE Automation in der Praxis demonstriert. Das Beispiel verwendet die Sammlung Documents von TextMaker, die für alle derzeit geöffneten Dokumente steht. Erst wird ermittelt, wie viele Dokumente gerade geöffnet sind. Anschließend werden die Namen der geöffneten Dokumente ausgegeben. Schließlich werden die Dokumente geschlossen.

Tipp: Ausführliche Informationen zu den Themen BasicMaker und TextMaker sowie BasicMaker und PlanMaker finden Sie in den gleichnamigen Kapiteln.

Sub Main

 

 Dim tm As Object

 Set tm = CreateObject("TextMaker.Application")

 tm.Visible = True                        ' TextMaker sichtbar machen

 tm.Activate                              ' TextMaker in den Vordergrund bringen

 tm.Documents.Add                         ' Drei neue Dokumente anlegen

 tm.Documents.Add

 tm.Documents.Add

 Print tm.Documents.Count & " Dokumente geöffnet"

 Dim x As Object

 For Each x in tm.Documents

         Print x.Name                           ' Namen der Dokumente ausgeben

 Next

 

 tm.Documents.Close                        ' Alle Dokumente schließen

 Set tm = Nothing                          ' Verbindung zu TextMaker beenden

End Sub