![]() |
||
![]() |
Mehrfacheingabe fⁿr Autotext-EintrΣge vermeidenIch schreibe oft Briefe, in denen ich an mehreren Stellen den gleichen Autotext-Eintrag ben÷tige. In der Ausgabe 8/98 haben Sie ein Makro vorgestellt, das Mehrfacheingaben fⁿr normalen Text ⁿberflⁿssig macht. Ist es m÷glich, das Makro auch fⁿr Autotext-EintrΣge zu verwenden, und wenn ja, wie mu▀ ich vorgehen? Autotext soll die wiederholte Eingabe mehrerer Zeilen formatierten Textes oder sogar das Einfⁿgen von Grafiken vereinfachen. Sie geben nur noch Ihr Kⁿrzel ein und drⁿcken die Taste [F3]. Der Tastendruck ist damit der einzige Unterschied zur direkten Texteingabe. VBA sieht eine Funktion vor, die genau diesem Tastendruck entspricht: InsertAutoText. Das Vorgehen Σhnelt also dem bei den Textfeldern: Sie definieren in einer Vorlage Textmarken an jenen Stellen, an denen Text landen soll. Anschlie▀end legen Sie die Autotext-EintrΣge fest. Dann erweitern Sie das AutoNew-Makro aus der Ausgabe 8/98 durch Anweisungen aus dem Kasten rechts. Das Makro funktioniert auch ohne den in der WIN-Ausgabe 8/98 dargestellten Text. Der Hinweis in Zeile vier soll lediglich die Verbindungsm÷glichkeit zwischen diesen beiden Makros anzeigen. Nach den Initialisierungen fragt das Makro zuerst das einzufⁿgende Kⁿrzel ab. Dazu eignet sich - genauso wie bei den Zeichenketten - die Funktion Inputbox(). Nachdem Sie die identifizierende Zeichenkette in der Variablen Identifier gespeichert haben, k÷nnen Sie mit der nΣchsten Anweisung zum ersten Einsatzort springen. Dort fⁿgen Sie den Identifier wieder ein und aktivieren mit Hilfe der Funktion InsertAutoText sozusagen die Funktionstaste [F3]. Word fⁿgt dann an dieser Stelle den korrespondierenden Autotext- Eintrag ein. Falls zu der in Identifier gespeicherten Zeichenkette kein passender Au- totext-Eintrag vorhanden ist, erzeugt die Funktion InsertAutoText einen Fehler und die Fehlerbehandlungsroutine kommt zur Ausfⁿhrung. Wenn Sie das Makro nicht unbedingt beim Start ausfⁿhren und das Kⁿrzel nicht erfragen, sondern erst nach der Eingabe durch den Anwender ermitteln m÷chten, verwenden Sie folgende Anweisung statt der Inputbox: Selection.MoveLeft Unit:=wdWord, Count:=1, Extend:=wdExtend╢ Identifier = Selection.Text╢Die erste Anweisung wΣhlt das direkt vor der Markierung befindliche Wort aus und markiert es. Die zweite Anweisung schreibt die Zeichenkette in die Variable Identifier. Jetzt sollte es keine Probleme mehr geben, Autotext-EintrΣge automatisch zu verteilen. Listing: Autotext-EintrΣge automatisieren Sub AutoNew ()╢ Dim Identifier As String╢ On Error GoTo Fehlerbehandlung╢ æ[... Der bisherige Makrotext...]╢ Identifier = InputBox (äAutotext-Kⁿrzel:ô, ôEingabeô, ôKⁿrzelô)╢ ActiveDocument.Bookmarks (ôAdr1ô).Select╢ Selection.TypeText Identifier╢ Selection.Range.InsertAutoText╢ æUnd so weiter...╢ ActiveDocument.Bookmarks (ôAdr2ô).Select╢ Selection.TypeText Identifier╢ Selection.Range.InsertAutoText╢ Fehlerbehandlung:╢ MsgBox ôDie Aktion ist fehlgeschlagen!ô╢ End Sub╢ |
![]() |