Benutzer mit den meisten Antworten
Word Text mit Zeilenumbruch ersetzen

Frage
-
Hallo Forum,
über die Find Methode in Word kann ich Text finden und ersetzen.
Das geht alles gut, aber wenn der Text aus einem Textfeld mit mehreren Zeilen besteht, wird der Text zwar nach Word übertragen, aber der Zeilenumbruch geht verloren.
zB im Textfeld
12345
67890
1111
zu suchender Text in Word wird dann ersetzt mit "12345678901111" am Stück.
Was mus ich machen, das auch der Zeilenumbruch in Word erfolgt wie in meinem Eingabefeld in der Maske.
Kann mir da jemand helfen ? Danke.
Gruß Roland
Antworten
-
Hallo Roland,
den Code verstehe ich ehrlich gesagt nicht.
Du gibst den Ersetzungstext nicht an und übergibst wdReplaceNone (keine Ersetzung vornehmen) als Ersetzungsparameter. Wie soll da überhaupt was ersetzt werden?
Probier aber dennoch bitte mal \\r bzw. \\n bzw. \\r\\n. Ggfs. ersetzt C# die Angaben gleich durch einen Zeilenumbruch, da C# \r und \n selbst als Zeichenliterale erkennt, siehe u.a.:
http://www.dotnetperls.com/newline
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Mittwoch, 5. März 2014 19:38
- Als Antwort markiert Roland DE Montag, 10. März 2014 13:42
Alle Antworten
-
Hallo Roland,
ersetz mal die Zeilenumbrüche in deinem Zieltext durch "\r\n" bzw. nur "\r" oder "\n".
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Stefan,
das hatte ich schon versucht.
Es sind einzelne Textfelder die ich zu einem Text zusammenstelle.
string Text = TextA +"\r";
Text += TextB + "\r";
...
Aber das Ergebnis ist immer das Gleiche, es wird kein Umbruch gemacht.
Den Text in Word ersetze ich überigens mit der Funktion Finde.
WordApp.Selection.GoTo(ref missing, ref missing, ref missing, ref missing); FindText = "[[SuchText]]"; Replace = Word.WdReplace.wdReplaceNone; WordApp.Selection.Find.Execute(ref FindText, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref Replace, ref missing, ref missing, ref missing, ref missing);
Gruß Roland
-
Hi,
ist dieser Thread noch aktuell ? Bist Du hier inzwischen weitergekommen ?
Gruß,
CiprianCiprian Bogdan, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
Hallo Roland,
den Code verstehe ich ehrlich gesagt nicht.
Du gibst den Ersetzungstext nicht an und übergibst wdReplaceNone (keine Ersetzung vornehmen) als Ersetzungsparameter. Wie soll da überhaupt was ersetzt werden?
Probier aber dennoch bitte mal \\r bzw. \\n bzw. \\r\\n. Ggfs. ersetzt C# die Angaben gleich durch einen Zeilenumbruch, da C# \r und \n selbst als Zeichenliterale erkennt, siehe u.a.:
http://www.dotnetperls.com/newline
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Mittwoch, 5. März 2014 19:38
- Als Antwort markiert Roland DE Montag, 10. März 2014 13:42
-
Hallo Stefan,
Du hast natürlich recht. Anbei etwas mehr Kode.
// Text ersetzen string TextNeu = "TEST TEXT \r\nNeue Zeile\\r\\nNOCH EINE"; foreach (Word.Range tmpRange in aDoc.StoryRanges) { tmpRange.Find.Text = "[[Vorname]]"; tmpRange.Find.Replacement.Text = TextNeu; tmpRange.Find.Wrap = Word.WdFindWrap.wdFindContinue; object replaceAll = Word.WdReplace.wdReplaceAll; tmpRange.Find.Execute(ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref replaceAll, ref missing, ref missing, ref missing, ref missing); }
Ich habe damit dem\\r und \\n so nochmal getestet.
Im "normalen" Text funktioniert der Umbruch. Steht der Text aber in einem Tabellenfeld funktioniert der Zeilenumbruch nicht. Für das \\r stehen dort dann 3 Leerzeichen.
Hast Du dafür eine Erklärung ? Wo liegt der Unterschied zwischen einem Text im Dokument und einem Text in einem Tabellenfeld ?
Gruß Roland