Hey lysienne,
Wenn ich das Makro nochmal ausführe wird der neue Text für den alten gesetzt. Ich will ab er das dieser überschrieben wird.
Ich denke, du meinst nicht "für" sondern "vor"? Das wäre das normale Verhalten.
Natürlich kannst du auch bestehenden Text ersetzen.
Code: Alles auswählen
oCursor = oDoc.Text.createTextCursorByRange(oBookmark.Anchor)
Mit dieser Zeile erzeugst du einen Text-Cursor am Punkt oBookmark.Anchor. Willst du jetzt die nächsten 5 Zeichen "markieren", so bewegst du den Cursor um fünf Zeichen vorwärts und markierst diese:
Wenn du jetzt am Cursor den Sting einfügst, werden die markierten Zeichen überschrieben.
Die Problematik in deinem Fall hat jedoch zwei "Tücken":
Erstens musst du wissen, was für ein "alter" Text da drin steht, um ihn entsprechend zu markieren. Einfach, wenn es sich immer nur um ein Wort handelt, oder bis zum Ende des Absatzes geht..., kompliziert, wenn es beliebige Strings innerhalb von Fliesstext sind.
Zweitens: Durch bewegen des Cursors und markieren des Bereiches wird die Textmarke mit markiert und dadurch überschrieben (sprich: gelöscht). Die musst du dann entweder neu einfügen oder insgesamt dein Dokument anders planen, zum Beispiel so, dass nach der Bookmark zunächst ein Leerzeichen folgt und dann erst der Text. Dann kannst du sie immer erhalten:
Code: Alles auswählen
oBookmark = oBookmarks.getByName("Asp")
oCursor = oDoc.Text.createTextCursorByRange(oBookmark.Anchor)
oCursor.goRight(1, false) 'bewegt den Cursor um 1 Zeichen vorwärts
REM oCursor.gotoEndOfWord(true) 'bewegt den Cursor um ein Wort
oCursor.string = "Hans" 'ersetzt das Wort durch Hans
Wichtig Hierbei: Das erste Zeichen nach der Bookmark sollte eben ein Leerzeichen sein!
Gruss
Thomas