![]() |
||
![]() |
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 |
![]() |