다음을 통해 공유


프로그래밍 방식으로 Word 문서에 텍스트 삽입

Microsoft Office Word 문서에 텍스트를 삽입하는 기본 방법에는 다음 세 가지가 있습니다.

  • 범위에 텍스트를 삽입합니다.

  • 범위의 텍스트를 새 텍스트로 바꿉니다.

  • TypeText 개체의 Selection 메서드를 사용하여 커서 또는 선택 영역에 텍스트를 삽입합니다.

참고 항목

콘텐츠 컨트롤 및 책갈피에 텍스트를 삽입할 수도 있습니다. 자세한 내용은 콘텐츠 컨트롤책갈피 컨트롤을 참조하세요.

적용 대상: 이 항목의 정보는 Word의 문서 수준 프로젝트 및 VSTO 추가 기능 프로젝트에 적용됩니다. 자세한 내용은 Office 애플리케이션 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하세요.

참고 항목

여러 플랫폼에서 Office 환경을 확장하는 솔루션을 개발하는 데 관심이 있으신가요? 새로운 Office 추가 기능 모델을 확인하세요. Office 추가 기능은 VSTO 추가 기능과 솔루션에 비해 공간을 적게 사용하며 HTML5, JavaScript, CSS3 및 XML과 같은 거의 모든 웹 프로그래밍 기술을 사용하여 빌드할 수 있습니다.

범위에 텍스트 삽입

Text 개체의 Range 속성을 사용하여 문서에 텍스트를 삽입합니다.

범위에 텍스트를 삽입하려면

  1. 문서의 시작 부분에 범위를 지정하고 New Text텍스트를 삽입합니다.

    다음 코드 예제는 문서 수준 사용자 지정에서 사용할 수 있습니다.

    object start = 0; 
    object end = 0; 
    
    Word.Range rng = this.Range(ref start, ref end); 
    rng.Text = "New Text";
    

    다음 코드 예제는 VSTO 추가 기능에서 사용할 수 있습니다. 이 코드에서는 활성 문서를 사용합니다.

    Word.Range rng = this.Application.ActiveDocument.Range(0, 0);
    rng.Text = "New Text";
    
  2. 1자에서 삽입된 텍스트의 길이까지 확장된 Range 개체를 선택합니다.

    rng.Select();
    

범위의 텍스트 바꾸기

지정된 범위에 텍스트가 포함되어 있는 경우 범위에 있는 모든 텍스트가 삽입된 텍스트로 바뀝니다.

범위의 텍스트를 바꾸려면

  1. 문서의 처음 12자로 구성된 Range 개체를 만듭니다.

    다음 코드 예제는 문서 수준 사용자 지정에서 사용할 수 있습니다.

    object start = 0; 
    object end = 12; 
    
    Word.Range rng = this.Range(ref start, ref end);
    

    다음 코드 예제는 VSTO 추가 기능에서 사용할 수 있습니다. 이 코드에서는 활성 문서를 사용합니다.

    Word.Range rng = this.Application.ActiveDocument.Range(0, 12);
    
  2. 이러한 문자를 New Text문자열로 바꿉니다.

    rng.Text = "New Text";
    
  3. 범위를 선택합니다.

    rng.Select();
    

TypeText를 사용하여 텍스트 삽입

TypeText 메서드는 선택 영역에 텍스트를 삽입합니다. TypeText 는 사용자 컴퓨터에 설정된 옵션에 따라 다르게 동작합니다. 다음 프로시저의 코드에서는 Selection 개체 변수를 선언하고 Overtype 옵션이 설정된 경우 해제합니다. Overtype 옵션이 활성화된 경우 커서 옆에 있는 텍스트를 모두 덮어씁니다.

TypeText 메서드를 사용하여 텍스트를 삽입하려면

  1. Selection 개체 변수를 선언합니다.

    Word.Selection currentSelection = Application.Selection;
    
  2. Overtype 옵션이 설정된 경우 해제합니다.

    if (Application.Options.Overtype) 
    { 
        Application.Options.Overtype = false; 
    }
    
  3. 현재 선택 영역이 삽입 지점인지 테스트합니다.

    삽입 지점이면 코드가 TypeText를 사용하여 문장을 삽입하고 TypeParagraph 메서드를 사용하여 단락 표시를 삽입합니다.

    // Test to see if selection is an insertion point.
    if (currentSelection.Type == Word.WdSelectionType.wdSelectionIP) 
    { 
        currentSelection.TypeText("Inserting at insertion point. ");
        currentSelection.TypeParagraph(); 
    }
    
  4. ElseIf 블록의 코드에서는 선택이 일반 선택인지 테스트합니다. 일반 선택이면 다른 If 블록에서 ReplaceSelection 옵션이 설정되었는지 테스트합니다. 일반 선택이면 코드에서 선택 영역의 Collapse 메서드를 사용하여 선택 영역을 선택한 텍스트 블록의 시작 부분에 있는 삽입 지점으로 축소합니다. 텍스트와 단락 표시를 삽입합니다.

    else 
        if (currentSelection.Type == Word.WdSelectionType.wdSelectionNormal)
        { 
            // Move to start of selection.
            if (Application.Options.ReplaceSelection)
            { 
                object direction = Word.WdCollapseDirection.wdCollapseStart;
                currentSelection.Collapse(ref direction);
            }
            currentSelection.TypeText("Inserting before a text block. ");
            currentSelection.TypeParagraph();
        }
    
  5. 선택 영역이 삽입 지점 또는 선택한 텍스트 블록이 아니면 Else 블록의 코드에서 아무 작업도 수행하지 않습니다.

    else
    {
        // Do nothing.
    }
    

    키보드의 백스페이스 키 기능과 유사한 Selection 개체의 TypeBackspace 메서드를 사용할 수도 있습니다. 그러나 텍스트 삽입 및 조작의 경우 Range 개체가 더 많은 제어를 제공합니다.

    다음 예제에서는 전체 코드를 보여 줍니다. 이 예제를 사용하려면 프로젝트의 ThisDocument 또는 ThisAddIn 클래스에서 코드를 실행합니다.

    private void SelectionInsertText() 
    { 
        Word.Selection currentSelection = Application.Selection; 
    
        // Store the user's current Overtype selection
        bool userOvertype = Application.Options.Overtype;
    
        // Make sure Overtype is turned off.
        if (Application.Options.Overtype) 
        { 
            Application.Options.Overtype = false; 
        } 
    
        // Test to see if selection is an insertion point.
        if (currentSelection.Type == Word.WdSelectionType.wdSelectionIP) 
        { 
            currentSelection.TypeText("Inserting at insertion point. ");
            currentSelection.TypeParagraph(); 
        } 
        else 
            if (currentSelection.Type == Word.WdSelectionType.wdSelectionNormal)
            { 
                // Move to start of selection.
                if (Application.Options.ReplaceSelection)
                { 
                    object direction = Word.WdCollapseDirection.wdCollapseStart;
                    currentSelection.Collapse(ref direction);
                }
                currentSelection.TypeText("Inserting before a text block. ");
                currentSelection.TypeParagraph();
            }
            else
            {
                // Do nothing.
            }
    
        // Restore the user's Overtype selection
        Application.Options.Overtype = userOvertype;
    }