방법: 범위를 만들 때 단락 기호 제외
단락을 기준으로 Range 개체를 만들 때마다 단락 기호 같은 인쇄되지 않는 모든 문자가 범위에 포함됩니다. 소스 단락의 텍스트를 대상 단락에 삽입하려 할 수도 있습니다. 대상 단락을 개별 단락으로 분할하지 않으려면 먼저 소스 단락에서 단락 기호를 제거해야 합니다. 또한, 단락 서식 정보가 단락 기호 안에 저장되므로 특정 범위를 기존 단락에 삽입할 때 단락 기호가 포함되지 않도록 해야 할 수도 있습니다.
적용 대상: 이 항목의 정보는 Word 2007 및 Word 2010의 문서 수준 프로젝트 및 응용 프로그램 수준 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.
다음 예제 프로시저에서는 두 개의 문자열 변수를 선언하고 활성 문서에서 첫 번째 단락과 두 번째 단락의 내용을 검색한 다음 해당 내용을 서로 바꿉니다. 그런 다음 이 예제에서는 MoveEnd 메서드를 사용하여 해당 범위의 단락 마커를 제거하고 단락 안에 텍스트를 삽입합니다.
텍스트를 삽입할 때 단락 구조를 제어하려면
첫 번째 단락과 두 번째 단락에 대해 두 개의 범위 변수를 만들고 Text 속성을 사용하여 두 단락의 내용을 검색합니다.
다음 코드 예제는 문서 수준 사용자 지정에 사용할 수 있습니다.
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;
다음 코드 예제는 응용 프로그램 수준 추가 기능에 사용할 수 있습니다. 이 코드에서는 활성 문서를 사용합니다.
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;
Text 속성을 할당하여 두 단락의 텍스트를 서로 바꿉니다.
firstRange.Text = secondString secondRange.Text = firstString
firstRange.Text = secondString; secondRange.Text = firstString;
각 범위를 차례로 선택하고 일시 중지하여 메시지 상자에 결과를 표시합니다.
firstRange.Select() MessageBox.Show(firstRange.Text) secondRange.Select() MessageBox.Show(secondRange.Text)
firstRange.Select(); MessageBox.Show(firstRange.Text); secondRange.Select(); MessageBox.Show(secondRange.Text);
단락 마커가 더는 firstRange에 포함되지 않도록 MoveEnd 메서드를 사용하여 firstRange를 조정합니다.
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);
새 문자열을 범위의 Text 속성에 할당하여 첫 번째 단락의 나머지 텍스트를 바꿉니다.
firstRange.Text = "New content for paragraph 1."
firstRange.Text = "New content for paragraph 1.";
단락 기호가 포함되도록 secondRange의 텍스트를 바꿉니다.
secondRange.Text = "New content for paragraph 2."
secondRange.Text = "New content for paragraph 2.";
firstRange를 선택하고 일시 중지하여 메시지 상자에 결과를 표시한 다음 secondRange에 대해 동일한 작업을 수행합니다.
단락 기호가 제외되도록 firstRange를 다시 정의했으므로 단락의 원래 서식은 그대로 유지됩니다. 그러나 secondRange의 단락 기호 위에 문장이 삽입되므로 단락 구분이 사라집니다.
firstRange.Select() MessageBox.Show(firstRange.Text) secondRange.Select() MessageBox.Show(secondRange.Text)
firstRange.Select(); MessageBox.Show(firstRange.Text); secondRange.Select(); MessageBox.Show(secondRange.Text);
두 범위의 원래 내용은 문자열로 저장되므로 문서를 원래 상태로 복원할 수 있습니다.
한 문자 위치에 대해 MoveEnd 메서드를 사용하여 단락 기호가 포함되도록 firstRange를 다시 조정합니다.
firstRange.MoveEnd(Unit:=Word.WdUnits.wdCharacter, Count:=1)
move = 1; // move right 1 firstRange.MoveEnd(ref charUnit, ref move);
secondRange를 삭제합니다. 이렇게 하면 세 번째 단락이 원래 위치로 복원됩니다.
secondRange.Delete()
secondRange.Delete(ref missing, ref missing);
firstRange에서 원래 단락 텍스트를 복원합니다.
firstRange.Text = firstString
firstRange.Text = firstString;
Range 개체의 InsertAfter 메서드를 사용하여 firstRange 뒤에 원래 두 번째 단락 내용을 삽입한 다음 firstRange를 선택합니다.
firstRange.InsertAfter(secondString) firstRange.Select()
firstRange.InsertAfter(secondString); firstRange.Select();
문서 수준 사용자 지정 예제
문서 수준 사용자 지정에서 텍스트를 삽입할 때 단락 구조를 제어하려면
다음 예제에서는 문서 수준 사용자 지정의 전체 메서드를 보여 줍니다. 이 코드를 사용하려면 프로젝트의 ThisDocument 클래스에서 이 코드를 실행하십시오.
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(); }
응용 프로그램 수준 추가 기능 예제
응용 프로그램 수준 추가 기능에서 텍스트를 삽입할 때 단락 구조를 제어하려면
다음 예제에서는 응용 프로그램 수준 추가 기능의 전체 메서드를 보여 줍니다. 이 코드를 사용하려면 프로젝트의 ThisAddIn 클래스에서 이 코드를 실행하십시오.
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(); }