 |
Mehrfacheingabe für Autotext-Einträge vermeiden
Ich 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¶
|
 |