![]() |
||
![]() |
Mehrfache Eingaben fⁿr Word 97 vermeidenIch verwende Word 97, um ein Formular mit mehreren DurchschlΣgen zu drucken. Da ich die DurchschlΣge als einzelne Seiten konzipiert habe, sind einige Eingaben mehrfach vorzunehmen. Gibt es eine M÷glichkeit, einmal gemachte Eingaben gleich in alle Stellen des Dokuments zu schreiben, um redundante Eingaben zu vermeiden? Das lΣ▀t sich per Makro vermeiden. Dabei schreiben Sie die Werte nicht ins Dokument, sondern jeweils in eine Variable. Das Makro fⁿgt dann den Inhalt der Variablen in die gewⁿnschten Stellen ein. Um Word mitzuteilen, wo es die Werte einfⁿgen soll, kennzeichnen Sie die betreffenden Stellen zuvor mit Hilfe von Textmarken. ╓ffnen Sie zunΣchst Ihr Formular und ⁿberlegen sich, an welchen Stellen die gleichen Werte einzugeben sind. Dann positionieren Sie den Cursor an der ersten Stelle und definieren dort mit Einfⁿgen û Textmarke eine Textmarke. WΣhlen Sie einen bezeichnenden Namen und beenden den Namen mit der Zeichenfolge _1, also beispielsweise Name_1. Anschlie▀end setzen Sie den Cursor an die nΣchste Stelle. Dort definieren Sie eine Textmarke mit der Bezeichnung Name_2. Auf diese Weise versehen Sie das ganze Dokument mit entsprechenden Textmarken. Benutzen Sie dabei immer einen beschreibenden Namen und die Indizierung durch eine fortlaufende Zahl. Sobald alle notwendigen Textmarken definiert sind, starten Sie mit dem Befehl Extras û Makro û Makros den gleichnamigen Dialog. Als Namen geben Sie AutoNew ein und wΣhlen die SchaltflΣche Erstellen. Word startet den Visual-Basic-Editor. Zwischen Sub AutoNew() und End Sub geben Sie die Zeilen aus Listing 1 (rechts) ein Statt der im Beispiel fⁿr die Funktion ActiveDocument.Bookmarks() verwendeten Name_1, Name_2 etc., setzen Sie die Namen Ihrer Textmarken in Anfⁿhrungszeichen ein. Direkt nach dem Anlegen eines neuen Dokuments startet Word dann automatisch das Makro AutoNew. Die DIM-Anweisung definiert eine Textvariable, in der Sie die Eingabewerte zwischenspeichern. Die On-Error-Aweisung sorgt fⁿr einen gesicherten Abbruch des Makros, falls etwas schieflΣuft. Mit der Anweisung InputBox veranlassen Sie Word, einen kleinen Eingabedialog zu starten. Der fragt mit dem ersten in Klammern angegebenen Text nach einem Eingabewert und ⁿbergibt ihn an die Variable Wert. Die Methode ActiveDocument.Bookmarks(äName_1ô).Select bewegt die Einfⁿgemarke an die Textmarke Name_1. Mit Hilfe der Methode InsertAfter fⁿgen Sie den Inhalt der Variablen Wert hinter der aktuellen Position der Einfⁿgemarke ein. Auf diese Weise k÷nnen Sie nach dem Erfragen des Wertes die Einfⁿgemarke von Textmarke zu Textmarke bewegen und den Wert beliebig oft einfⁿgen. Um mehrere Werte, beispielsweise Ort, Stra▀e etc., einzufⁿgen, erweitern Sie das Makro vor der Anweisung GoTo Fertig: durch eine weitere InputBox-Anweisung. Sie ⁿberschreiben dabei einfach die dann nicht mehr ben÷tigte Variable Wert und suchen anschlie▀end wieder die entsprechenden Textmarken auf. Um beispielsweise noch die Stra▀e abzufragen und zweimal einzufⁿgen, wΣre das Makro so zu ergΣnzen, wie in Listing 2 zu sehen. Beachten Sie, da▀ die richtige Plazierung der Textmarken eine elementare Voraussetzung fⁿr das korrekte Funktionieren dieses Makros ist. Das Makro und dessen Erweiterung finden Sie auf der WIN-Monats-CD und in den WIN-Online-Foren. Listing 1: Automatische Mehrfacheingaben in Word 97 Sub AutoNew () Dim Wert As String On Error GoTo Fehlerbehandlung Wert = InputBox (ôWert fⁿr Name:ô, ôEingabeô, ôEin Nameô) ActiveDocument.Bookmarks (ôName_1ô).Select Selection.InsertAfter Wert ActiveDocument.Bookmarks (ôName_2ô).Select Selection.InsertAfter Wert ActiveDocument.Bookmarks (ôName_3ô).Select Selection.InsertAfter Wert GoTo Fertig Fehlerbehandlung: MsgBox ôSie haben die Aktion abgebrochen!ô Fertig: End Sub Listing 2: Mehrere Werte automatisch eingeben [...] ActiveDocument.Bookmarks (ôName_3ô).Select Wert = InputBox (ôWert fⁿr Stra▀e:ô, ôEingabeô, ôEine Stra▀eô) ActiveDocument.Bookmarks (ôStr_1ô).Select Selection.InsertAfter Wert ActiveDocument.Bookmarks (ôStr_2ô).Select Selection.InsertAfter Wert GoTo Fertig [...] |
![]() |