Gewusst wie: Ausschließen von Absatzmarken beim Erstellen von Bereichen
Wenn Sie ein Range-Objekt auf Grundlage eines Absatzes erstellen, umfasst der Bereich auch alle nicht druckbaren Zeichen wie zum Beispiel Absatzmarken. Möglicherweise möchten Sie den Text aus einem Quellabsatz in einen Zielabsatz einfügen. Um dabei den Zielabsatz nicht in mehrere Absätze aufzuteilen, müssen Sie zunächst die Absatzmarke aus dem Quellabsatz entfernen. Außerdem sind in der Absatzmarke Formatierungsinformationen gespeichert, die Sie möglicherweise beim Einfügen des Bereichs in einen vorhandenen Absatz nicht übernehmen möchten.
Betrifft: Die Informationen in diesem Thema betreffen Projekte auf Dokument- und auf Anwendungsebene für Word 2007 und Word 2010. Weitere Informationen finden Sie unter Verfügbare Funktionen nach Office-Anwendung und Projekttyp.
In der folgenden Beispielprozedur werden zwei Zeichenfolgenvariablen deklariert, die Inhalte des ersten und des zweiten Absatzes im aktiven Dokument werden abgerufen, und anschließend werden die Inhalte ausgetauscht. Das Beispiel veranschaulicht das Entfernen der Absatzmarke aus dem Bereich unter Verwendung der MoveEnd-Methode und das anschließende Einfügen des Texts in den Absatz.
So steuern Sie die Absatzstruktur beim Einfügen von Text
Erstellen Sie für den ersten und den zweiten Absatz zwei Bereichsvariablen, und rufen Sie ihre Inhalte mit der Text-Eigenschaft ab.
Das folgende Codebeispiel kann in einer Anpassung auf Dokumentebene verwendet werden.
Dim firstRange As Word.Range = Me.Paragraphs(1).Range Dim secondRange As Word.Range = Me.Paragraphs(2).Range Dim firstString As String = firstRange.Text Dim secondString As String = secondRange.Text
Word.Range firstRange = this.Paragraphs[1].Range; Word.Range secondRange = this.Paragraphs[2].Range; string firstString = firstRange.Text; string secondString = secondRange.Text;
Das folgende Codebeispiel kann in einem Add-In auf Anwendungsebene verwendet werden. In diesem Code wird das aktive Dokument verwendet.
Dim document As Word.Document = Me.Application.ActiveDocument Dim firstRange As Word.Range = document.Paragraphs(1).Range Dim secondRange As Word.Range = document.Paragraphs(2).Range Dim firstString As String = firstRange.Text Dim secondString As String = secondRange.Text
Word.Document document = this.Application.ActiveDocument; Word.Range firstRange = document.Paragraphs[1].Range; Word.Range secondRange = document.Paragraphs[2].Range; string firstString = firstRange.Text; string secondString = secondRange.Text;
Ordnen Sie die Text-Eigenschaft zu, und tauschen Sie auf diese Weise die Texte der beiden Absätze aus.
firstRange.Text = secondString secondRange.Text = firstString
firstRange.Text = secondString; secondRange.Text = firstString;
Wählen Sie nacheinander jeden Bereich aus, und halten Sie den Vorgang an, um die Ergebnisse in einem Meldungsfeld anzuzeigen.
firstRange.Select() MessageBox.Show(firstRange.Text) secondRange.Select() MessageBox.Show(secondRange.Text)
firstRange.Select(); MessageBox.Show(firstRange.Text); secondRange.Select(); MessageBox.Show(secondRange.Text);
Passen Sie firstRange unter Verwendung der MoveEnd-Methode so an, dass die Absatzmarke nicht mehr Teil von firstRange ist.
firstRange.MoveEnd(Unit:=Word.WdUnits.wdCharacter, Count:=-1)
object charUnit = Word.WdUnits.wdCharacter; object move = -1; // move left 1 firstRange.MoveEnd(ref charUnit, ref move);
Ersetzen Sie den restlichen Text im ersten Absatz, indem Sie der Text-Eigenschaft des Bereichs eine neue Zeichenfolge zuweisen.
firstRange.Text = "New content for paragraph 1."
firstRange.Text = "New content for paragraph 1.";
Ersetzen Sie den Text in secondRange einschließlich der Absatzmarke.
secondRange.Text = "New content for paragraph 2."
secondRange.Text = "New content for paragraph 2.";
Markieren Sie firstRange, und zeigen Sie die Ergebnisse als Unterbrechung in einem Meldungsfeld an. Führen Sie den gleichen Vorgang für secondRange aus.
Da firstRange unter Ausschluss der Absatzmarke neu definiert wurde, wird die ursprüngliche Formatierung des Absatzes beibehalten. Es wurde jedoch über der Absatzmarke in secondRange ein Satz eingefügt, wobei der separate Absatz entfernt wurde.
firstRange.Select() MessageBox.Show(firstRange.Text) secondRange.Select() MessageBox.Show(secondRange.Text)
firstRange.Select(); MessageBox.Show(firstRange.Text); secondRange.Select(); MessageBox.Show(secondRange.Text);
Die ursprünglichen Inhalte beider Bereiche wurden als Zeichenfolgen gespeichert, sodass das Dokument in seinem ursprünglichen Zustand wiederhergestellt werden kann.
Erweitern Sie die Größe von firstRange unter Verwendung der MoveEnd-Methode um eine Zeichenposition, sodass die Absatzmarke wieder Teil des Bereichs ist.
firstRange.MoveEnd(Unit:=Word.WdUnits.wdCharacter, Count:=1)
move = 1; // move right 1 firstRange.MoveEnd(ref charUnit, ref move);
Löschen Sie secondRange. Dadurch wird der dritte Absatz an seiner ursprünglichen Position wiederhergestellt.
secondRange.Delete()
secondRange.Delete(ref missing, ref missing);
Stellen Sie den ursprünglichen Text des Absatzes in firstRange wieder her.
firstRange.Text = firstString
firstRange.Text = firstString;
Verwenden Sie die InsertAfter-Methode des Range-Objekts, um den ursprünglichen Inhalt des zweiten Absatzes im Anschluss an firstRange einzufügen, und markieren Sie dann firstRange.
firstRange.InsertAfter(secondString) firstRange.Select()
firstRange.InsertAfter(secondString); firstRange.Select();
Beispiel für die Anpassung auf Dokumentebene
So steuern Sie die Absatzstruktur beim Einfügen von Text in Anpassungen auf Dokumentebene
Im folgenden Beispiel wird die vollständige Methode für eine Anpassung auf Dokumentebene gezeigt. Wenn Sie diesen Code verwenden möchten, führen Sie ihn von der ThisDocument-Klasse im Projekt aus.
Private Sub ReplaceParagraphText() Dim firstRange As Word.Range = Me.Paragraphs(1).Range Dim secondRange As Word.Range = Me.Paragraphs(2).Range Dim firstString As String = firstRange.Text Dim secondString As String = secondRange.Text firstRange.Text = secondString secondRange.Text = firstString firstRange.Select() MessageBox.Show(firstRange.Text) secondRange.Select() MessageBox.Show(secondRange.Text) firstRange.MoveEnd(Unit:=Word.WdUnits.wdCharacter, Count:=-1) firstRange.Text = "New content for paragraph 1." secondRange.Text = "New content for paragraph 2." firstRange.Select() MessageBox.Show(firstRange.Text) secondRange.Select() MessageBox.Show(secondRange.Text) firstRange.MoveEnd(Unit:=Word.WdUnits.wdCharacter, Count:=1) secondRange.Delete() firstRange.Text = firstString firstRange.InsertAfter(secondString) firstRange.Select() End Sub
private void ReplaceParagraphText() { Word.Range firstRange = this.Paragraphs[1].Range; Word.Range secondRange = this.Paragraphs[2].Range; string firstString = firstRange.Text; string secondString = secondRange.Text; firstRange.Text = secondString; secondRange.Text = firstString; firstRange.Select(); MessageBox.Show(firstRange.Text); secondRange.Select(); MessageBox.Show(secondRange.Text); object charUnit = Word.WdUnits.wdCharacter; object move = -1; // move left 1 firstRange.MoveEnd(ref charUnit, ref move); firstRange.Text = "New content for paragraph 1."; secondRange.Text = "New content for paragraph 2."; firstRange.Select(); MessageBox.Show(firstRange.Text); secondRange.Select(); MessageBox.Show(secondRange.Text); move = 1; // move right 1 firstRange.MoveEnd(ref charUnit, ref move); secondRange.Delete(ref missing, ref missing); firstRange.Text = firstString; firstRange.InsertAfter(secondString); firstRange.Select(); }
Beispiel für Add-Ins auf Anwendungsebene
So steuern Sie die Absatzstruktur beim Einfügen von Text in einem Add-In auf Anwendungsebene
Im folgenden Beispiel wird die vollständige Methode für ein Add-In auf Anwendungsebene gezeigt. Wenn Sie diesen Code verwenden möchten, führen Sie ihn von der ThisAddIn-Klasse im Projekt aus.
Private Sub ReplaceParagraphText() Dim document As Word.Document = Me.Application.ActiveDocument Dim firstRange As Word.Range = document.Paragraphs(1).Range Dim secondRange As Word.Range = document.Paragraphs(2).Range Dim firstString As String = firstRange.Text Dim secondString As String = secondRange.Text firstRange.Text = secondString secondRange.Text = firstString firstRange.Select() MessageBox.Show(firstRange.Text) secondRange.Select() MessageBox.Show(secondRange.Text) firstRange.MoveEnd(Unit:=Word.WdUnits.wdCharacter, Count:=-1) firstRange.Text = "New content for paragraph 1." secondRange.Text = "New content for paragraph 2." firstRange.Select() MessageBox.Show(firstRange.Text) secondRange.Select() MessageBox.Show(secondRange.Text) firstRange.MoveEnd(Unit:=Word.WdUnits.wdCharacter, Count:=1) secondRange.Delete() firstRange.Text = firstString firstRange.InsertAfter(secondString) firstRange.Select() End Sub
private void ReplaceParagraphText() { Word.Document document = this.Application.ActiveDocument; Word.Range firstRange = document.Paragraphs[1].Range; Word.Range secondRange = document.Paragraphs[2].Range; string firstString = firstRange.Text; string secondString = secondRange.Text; firstRange.Text = secondString; secondRange.Text = firstString; firstRange.Select(); MessageBox.Show(firstRange.Text); secondRange.Select(); MessageBox.Show(secondRange.Text); object charUnit = Word.WdUnits.wdCharacter; object move = -1; // move left 1 firstRange.MoveEnd(ref charUnit, ref move); firstRange.Text = "New content for paragraph 1."; secondRange.Text = "New content for paragraph 2."; firstRange.Select(); MessageBox.Show(firstRange.Text); secondRange.Select(); MessageBox.Show(secondRange.Text); move = 1; // move right 1 firstRange.MoveEnd(ref charUnit, ref move); secondRange.Delete(ref missing, ref missing); firstRange.Text = firstString; firstRange.InsertAfter(secondString); firstRange.Select(); }
Siehe auch
Aufgaben
Gewusst wie: Erweitern von Bereichen in Dokumenten
Gewusst wie: Reduzieren von Bereichen oder Markierungen in Dokumenten
Gewusst wie: Einfügen von Text in Word-Dokumente
Gewusst wie: Zurücksetzen von Bereichen in Word-Dokumenten
Gewusst wie: Definieren und Markieren von Bereichen in Dokumenten