![]() |
||
![]() |
Winword-Dokumente aus Excel erzeugenIch möchte Excel 7.0 und Winword 7.0 einsetzen, um aus Excel heraus Daten in das Winword-Dokument zu schreiben und es anschließend auszudrucken. Leider kann ich bisher aus Excel heraus nur Winword selbst öffnen. Wie bekomme ich aber die Daten automatisch in das Winword-Dokument? Zur Lösung dieses Problems eignet sich die OLE-Technologie. OLE ermöglicht das Starten und Steuern einer Anwendung aus einer anderen Anwendung heraus. Beispielsweise können Sie mit Hilfe von OLE aus einem Excel-Makro Winword starten, benutzen und wieder beenden. Um ein neues Excel-Makro anzulegen, wählen Sie den Befehl Einfügen – Makro – Visual Basic Modul. Der Bildschirm ändert daraufhin sein gewohntes Aussehen von der Kalkulationstabelle zu einem Texteditor für Makros mit weißem Hintergrund. Über die Tabellenregister am unteren Bildschirmrand gelangen Sie auf Wunsch wieder zu Ihren Tabellen zurück. Um beispielsweise den Wert der aktiven Zelle auf Tabellenblatt 1 in ein neues Word-Dokument zu schreiben, dieses auszudrucken und Word zu beenden, geben Sie die Befehle aus dem Kasten unten auf dieser Seite in den Editor ein. Die erste Zeile legt den Namen der Funktion fest. Die folgenden Zeilen definieren die benötigten Variablen. Die erste Variable ist eine Objektvariable für die Anwendung Word. Weiterhin benötigen Sie noch Variablen für den Inhalt der aktiven Zelle und für die Übergabe des Wertes von der Excel-Zelle an des Word-Dokument. Im nächsten Schritt muß die Funktion den Wert für die Übergabe ermitteln. Dazu aktivieren Sie das erste Tabellenblatt und schreiben den Wert der aktiven Zelle in die Variable MyValue. Jetzt ist alles bereit für die OLE-Aktionen. Mit Hilfe der Funktion CreateObject() erzeugen Sie eine Instanz von Word und weisen diese der Variablen WordObj zu. Jetzt stehen Ihnen fast alle Möglichkeiten offen. In diesem Beispiel veranlaßt der Befehl DateiNeu Winword, ein neues Dokument – basierend auf der Vorlage WINTEST.DOT – anzulegen. Diese Vorlage enthält unter anderem eine Textmarke namens POS1. Sie markiert die Stelle, an der Word den Wert aus Excel einfügen soll. Um zu dieser Textmarke zu gelangen, benutzen Sie den Befehl BearbeitenGeheZu, gefolgt vom Textmarkenamen. Der Befehl Einfügen schreibt den Wert der Variablen MyValue an die aktuelle Position, in diesem Fall die Position der Textmarke. Die folgenden Befehle sorgen für das Speichern des Dokuments und den Ausdruck. Beachten Sie den Wert 0 hinter der Druckanweisung. Wenn Sie hier eine 1 oder einfach nichts angeben, führt Word das Drucken im Hintergrund aus. Das ist normalerweise sinnvoll, kann aber zu ungewollten Störungen des automatischen Ablaufs führen. Falls Sie Word beenden, während es noch Daten an den Drucker schickt, läßt sich die entstehende „Verklemmung“ nur noch manuell lösen. Verwenden Sie deshalb lieber den Parameter 0. Dann wartet Word mit der Ausführung des nächsten Befehls, bis die Übergabe der Druckdaten beendet ist. Der vorletzte Befehl schließt das Dokument, und der letzte Befehl befreit den Speicher von der Anwendung beziehungsweise dem Anwendungsobjekt. Inzwischen sollten Sie Ihre Excel-Daten bereits auf dem ausgedruckten Word-Dokument betrachten können. Public Function WriteToWord () ‘Benötigte Variablen deklarieren Dim WordObj As Object, MyCellObj As Object Dim MyValue As String ‘Wert der aktiven Zelle auf erstem Blatt ermitteln Worksheets (1).Activate MyValue = ActiveCell.Value ‘OLE starten Set WordObj = CreateObject (“Word.Basic“) WordObj.DateiNeu “WINTest.dot“ WordObj.BearbeitenGeheZu “Pos1“ WordObj.Einfügen MyValue WordObj.DateiSpeichernUnter “TestDok“ WordObj.DateiDrucken 0 WordObj.DateiSchließen Set WordObj = Nothing End Function |
![]() |