Udostępnij za pośrednictwem


Programowe wstawianie tekstu do dokumentów programu Word

Istnieją trzy podstawowe sposoby wstawiania tekstu do dokumentów programu Microsoft Office Word:

  • Wstaw tekst w zakresie.

  • Zastąp tekst w zakresie nowym tekstem.

  • TypeText Użyj metody Selection obiektu, aby wstawić tekst w kursorze lub zaznaczeniu.

Uwaga

Możesz również wstawić tekst do kontrolek zawartości i zakładek. Aby uzyskać więcej informacji, zobacz Kontrolki zawartości i Kontrolka zakładki.

Dotyczy: informacje w tym temacie dotyczą projektów na poziomie dokumentu i projektów dodatków VSTO dla programu Word. Aby uzyskać więcej informacji, zobacz Funkcje dostępne przez aplikacja pakietu Office lication i typ projektu.

Uwaga

Chcesz opracowywać rozwiązania, które rozszerzają środowisko pakietu Office na wiele platform? Zapoznaj się z nowym modelem dodatków pakietu Office. Dodatki pakietu Office mają niewielki rozmiar w porównaniu z dodatkami I rozwiązaniami VSTO i można je tworzyć przy użyciu niemal dowolnej technologii programowania internetowego, takiej jak HTML5, JavaScript, CSS3 i XML.

Wstawianie tekstu w zakresie

Text Użyj właściwości Range obiektu, aby wstawić tekst w dokumencie.

Aby wstawić tekst w zakresie

  1. Określ zakres na początku dokumentu i wstaw tekst Nowy tekst.

    Poniższy przykład kodu może być używany w dostosowywaniu na poziomie dokumentu.

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

    Poniższy przykład kodu może być używany w dodatku VSTO. Ten kod używa aktywnego dokumentu.

    Word.Range rng = this.Application.ActiveDocument.Range(0, 0);
    rng.Text = "New Text";
    
  2. Range Zaznacz obiekt, który został rozszerzony z jednego znaku na długość wstawionego tekstu.

    rng.Select();
    

Zastępowanie tekstu w zakresie

Jeśli określony zakres zawiera tekst, cały tekst w zakresie zostanie zastąpiony wstawionym tekstem.

Aby zamienić tekst w zakresie

  1. Range Utwórz obiekt składający się z pierwszych 12 znaków w dokumencie.

    Poniższy przykład kodu może być używany w dostosowywaniu na poziomie dokumentu.

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

    Poniższy przykład kodu może być używany w dodatku VSTO. Ten kod używa aktywnego dokumentu.

    Word.Range rng = this.Application.ActiveDocument.Range(0, 12);
    
  2. Zastąp te znaki ciągiem Nowy tekst.

    rng.Text = "New Text";
    
  3. Wybierz zakres.

    rng.Select();
    

Wstawianie tekstu przy użyciu tekstu TypeText

Metoda TypeText wstawia tekst do zaznaczenia. TypeText zachowuje się inaczej w zależności od opcji ustawionych na komputerze użytkownika. Kod w poniższej procedurze deklaruje zmienną Selection obiektu i wyłącza opcję Nadtyp , jeśli jest włączona. Jeśli opcja Nadtyp jest aktywowana, każdy tekst obok kursora zostanie zastąpiony.

Aby wstawić tekst przy użyciu metody TypeText

  1. Zadeklaruj zmienną Selection obiektu.

    Word.Selection currentSelection = Application.Selection;
    
  2. Wyłącz opcję Nadtyp , jeśli jest włączona.

    if (Application.Options.Overtype) 
    { 
        Application.Options.Overtype = false; 
    }
    
  3. Przetestuj, czy bieżące zaznaczenie jest punktem wstawiania.

    Jeśli tak jest, kod wstawia zdanie przy użyciu TypeTextmetody , a następnie znak akapitu TypeParagraph przy użyciu metody .

    // Test to see if selection is an insertion point.
    if (currentSelection.Type == Word.WdSelectionType.wdSelectionIP) 
    { 
        currentSelection.TypeText("Inserting at insertion point. ");
        currentSelection.TypeParagraph(); 
    }
    
  4. Kod w testach blokowych ElseIf , aby sprawdzić, czy wybór jest normalnym wyborem. Jeśli tak jest, to inny jeśli blokuj testy, aby sprawdzić, czy opcja ReplaceSelection jest włączona. Jeśli tak jest, kod używa Collapse metody zaznaczenia, aby zwinąć zaznaczenie do punktu wstawiania na początku zaznaczonego bloku tekstu. Wstaw tekst i znacznik akapitu.

    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. Jeśli zaznaczenie nie jest punktem wstawiania lub blokiem zaznaczonego tekstu, kod w bloku Else nic nie robi.

    else
    {
        // Do nothing.
    }
    

    Można również użyć TypeBackspace metody Selection obiektu, która naśladuje funkcjonalność klawisza Backspace na klawiaturze. Jednak jeśli chodzi o wstawianie i manipulowanie tekstem, Range obiekt oferuje większą kontrolę.

    Poniższy przykład przedstawia kompletny kod. Aby użyć tego przykładu, uruchom kod z ThisDocument klasy or ThisAddIn w projekcie.

    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;
    }