プログラムによって Word 文書にテキストを挿入する

Microsoft Office Word の文書にテキストを挿入するには、主に次の 3 つの方法があります。

  • 範囲内にテキストを挿入する。

  • 範囲内のテキストを新しいテキストに置換する。

  • TypeText オブジェクトの Selection メソッドを使用して、カーソルの位置または選択範囲にテキストを挿入する。

Note

テキストをコンテンツ コントロールやブックマークに挿入することもできます。 詳細については、「コンテンツ コントロール」および「Bookmark コントロール」をご覧ください。

適用対象: このトピックの情報は、Word のドキュメント レベルのプロジェクトおよび VSTO アドインのプロジェクトに適用されます。 詳細については、「Office アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。

Note

複数のプラットフォームで Office エクスペリエンスを拡張するソリューションの開発に関心がありますか。 新しい Office アドイン モデルを確認してください。 Office アドインの占有領域は、VSTO アドインやソリューションと比較して小さく、その作成には、HTML5、JavaScript、CSS3、XML など、ほぼすべての Web プログラミング テクノロジを使用できます。

範囲内にテキストを挿入する

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 メソッドを使用することもできます。このメソッドは、キーボードの Backspace キーと同じ動作をします。 ただし、テキストの挿入および操作については、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;
    }