[OT] Ersetzen von Textmarken in einer Word-Vorlage durch VB

30/03/2011 - 19:57 von Lothar Geyer | Report spam
Ja, ich weiß - gehört nicht hierher. Aber das letzte Mal waren die
Antworten so informativ, dass ich es nocheinmal versuche.

Ich ersetzt Textmarken in einer Word-Vorlage. Zwei der Textmarken stehen
direkt hintereinander:

[tm1][tm2]

Es wird immer nur eine der Textmarken mit Inhalt gefüllt, die andere
Textmarke wird durch Ersetzen mit einem Leerstring entfernt.

Wenn ich nun die tm1 mit einem Leerstring ersetze, ergibt sich

[tm2]

und das Ersetzen vom tm2 klappt ebenfalls bestens.

Wenn ich aber tm1 mit einem beliebigen Sring ersetze, ergibt sich

[beliebigmt2]

Die Folge: beim Ersetzen von tm2 durch einen Leerstring verschwindet
auch der Text, der die Textmarke tm1 ersetzt hat.

Wenn ich in der Vorlage zwischen die beiden Textmarken ein Blank
einfüge, funktioniert alles wie gewünscht.

Nun zum Eingemachten: das Ersetzen einer Textmarke erfolgt durch diesen
Kode:

With myDocument
If .Bookmarks.Exists(Textmarke) Then .Bookmarks(Textmarke).Range = Text
End With

Ich weiß, es dreht sich nur um ein Leerzeichen, aber das stört in dem
Fall, in dem die erste Textmarke selbst ein Leerstring, das Gesamtbild.

Wie kann ich dem beikommen?

Lothar Geyer
 

Lesen sie die antworten

#1 Reiner Wolff
30/03/2011 - 21:26 | Warnen spam
Moin Lothar,

*Lothar Geyer* schrieb:
Ja, ich weiß - gehört nicht hierher. Aber das letzte Mal waren die
Antworten so informativ, dass ich es nocheinmal versuche.



Ja, Du bist mit dieser Frage hier OT.

Ich ersetzt Textmarken in einer Word-Vorlage. Zwei der Textmarken stehen
direkt hintereinander:
[tm1][tm2]


[schnippel]
Wenn ich aber tm1 mit einem beliebigen Sring ersetze, ergibt sich
[beliebigmt2]
Die Folge: beim Ersetzen von tm2 durch einen Leerstring verschwindet
auch der Text, der die Textmarke tm1 ersetzt hat.

Wenn ich in der Vorlage zwischen die beiden Textmarken ein Blank
einfüge, funktioniert alles wie gewünscht.

Nun zum Eingemachten: das Ersetzen einer Textmarke erfolgt durch diesen
Kode:
With myDocument
If .Bookmarks.Exists(Textmarke) Then .Bookmarks(Textmarke).Range = Text
End With



Ich schließe daraus, Du hast geschlossene Textmarken in Word benutzt, also
welche, bei denen sich Anfang und Endpunkt voneinander unterscheiden.

Word verhàlt sich bei geschlossenen Textmarken nicht immer nachvollziehbar.
Vermutlich löscht Word als erstes die Textmarke, wobei sich der Anfang der
zweiten Textmarke nach vorne verschiebt. Beim Wiedereinfügen des Textes,
der tm1 ersetzt, wird tm2 entsprechend erweitert.

Wir arbeiten bei sowas derzeit mit offenen Textmarken. Allerdings müssen
wir dann beim Ersetzen der Textmarke den Textmarkentext im Dokument
entsprechend löschen.

Allerdings gibt es dabei auch ein Problem, wenn die Textmarke das erste
Zeichen des Dokumentes darstellt.

Ich weiß, es dreht sich nur um ein Leerzeichen, aber das stört in dem
Fall, in dem die erste Textmarke selbst ein Leerstring, das Gesamtbild.
Wie kann ich dem beikommen?



Eigentlich nur, in dem Du vor dem Ersetzen der Textmarke überprüfst, ob
zwei Textmarken direkt aneinander angrenzen, um die hintere vor dem
Ersetzen der vorderen ein Zeichen nach hinten zu versetzen. Diese Änderung
müsstest Du dann natürlich nach dem Ersetzen der Ersten wieder rückgàngig
machen.


Allerdings könnte es natürlich sein, dass die Experten in der Word-NG oder
Word-Forum Dir dazu bessere Lösungen vorschlagen können.

HTH
Gruß aus Kiel
Reiner
Irren ist menschlich.
Aber wer richtigen Mist bauen will, braucht einen Computer!

Ähnliche fragen