方法: プログラムによって Word 文書にテキストを挿入する
Microsoft Office Word の文書にテキストを挿入するには、主に次の 3 とおりの方法があります。
[!メモ]
テキストをコンテンツ コントロールやブックマークに挿入することもできます。詳細については、「コンテンツ コントロール」および「Bookmark コントロール」を参照してください。
対象: このトピックの情報は、Word 2013 と Word 2010 のドキュメント レベルのプロジェクトおよびアプリケーション レベルのプロジェクトに適用されます。詳細については、「Office アプリケーションおよびプロジェクト タイプ別の使用可能な機能」を参照してください。
範囲へのテキストの挿入
文書にテキストを挿入するには、Text オブジェクトの Range プロパティを使用します。
範囲にテキストを挿入するには
文書の先頭に範囲を指定し、New Text というテキストを挿入します。
次のコード例はドキュメント レベルのカスタマイズで使用できます。
Dim rng As Word.Range = Me.Range(Start:=0, End:=0) rng.Text = " New Text "
object start = 0; object end = 0; Word.Range rng = this.Range(ref start, ref end); rng.Text = "New Text";
次のコード例はアプリケーション レベルのアドインで使用できます。このコードではアクティブ ドキュメントを使用します。
Dim rng As Word.Range = Me.Application.ActiveDocument.Range(Start:=0, End:=0) rng.Text = " New Text "
Word.Range rng = this.Application.ActiveDocument.Range(0, 0); rng.Text = "New Text";
1 文字から挿入したテキストの長さまで拡張された Range オブジェクトを選択します。
rng.Select()
rng.Select();
Range 内のテキストの置換
指定した範囲にテキストが含まれている場合は、その範囲内のすべてのテキストが挿入したテキストで置き換えられます。
範囲のテキストを置換するには
文書の先頭の 12 文字から成る Range オブジェクトを作成します。
次のコード例はドキュメント レベルのカスタマイズで使用できます。
Dim rng As Word.Range = Me.Range(Start:=0, End:=12)
object start = 0; object end = 12; Word.Range rng = this.Range(ref start, ref end);
次のコード例はアプリケーション レベルのアドインで使用できます。このコードではアクティブ ドキュメントを使用します。
Dim rng As Word.Range = Me.Application.ActiveDocument.Range(Start:=0, End:=12)
Word.Range rng = this.Application.ActiveDocument.Range(0, 12);
それらの文字を New Text という文字列で置換します。
rng.Text = " New Text "
rng.Text = "New Text";
範囲を選択します。
rng.Select()
rng.Select();
TypeText によるテキストの挿入
TypeText メソッドは、選択範囲にテキストを挿入します。TypeText の動作は、ユーザーのコンピューターで設定されているオプションによって異なります。次のプロシージャのコードは、Selection オブジェクト変数を宣言し、Overtype オプションがオンになっている場合は、オフにします。Overtype オプションが有効になっていると、カーソル位置の隣にあるテキストが上書きされます。
TypeText メソッドを使用してテキストを挿入するには
Selection オブジェクト変数を宣言します。
Dim currentSelection As Word.Selection = Application.Selection
Word.Selection currentSelection = Application.Selection;
Overtype オプションがオンの場合はオフにします。
If Application.Options.Overtype Then Application.Options.Overtype = False End If
if (Application.Options.Overtype) { Application.Options.Overtype = false; }
現在の選択範囲がカーソル位置であるかどうかを確認します。
選択範囲がカーソル位置である場合は、TypeText を使用して文を挿入した後、TypeParagraph メソッドを使用して段落記号を挿入します。
With currentSelection ' Test to see if selection is an insertion point. If .Type = Word.WdSelectionType.wdSelectionIP Then .TypeText("Inserting at insertion point. ") .TypeParagraph()
// Test to see if selection is an insertion point. if (currentSelection.Type == Word.WdSelectionType.wdSelectionIP) { currentSelection.TypeText("Inserting at insertion point. "); currentSelection.TypeParagraph(); }
ElseIf ブロック内のコードで、選択範囲が通常の選択範囲であるかどうかを確認します。通常の選択範囲である場合は、次の If ブロックで、ReplaceSelection オプションがオンになっているかどうかを確認します。オンの場合は、選択範囲の Collapse メソッドを使用して、選択範囲を縮小し、選択されているテキスト ブロックの先頭にカーソル位置を移動します。テキストと段落記号を挿入します。
ElseIf .Type = Word.WdSelectionType.wdSelectionNormal Then ' Move to start of selection. If Application.Options.ReplaceSelection Then .Collapse(Direction:=Word.WdCollapseDirection.wdCollapseStart) End If .TypeText("Inserting before a text block. ") .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 ブロックの処理は発生しません。
Else ' Do nothing. End If
else { // Do nothing. }
Selection オブジェクトの TypeBackspace メソッドを使用することもできます。このメソッドは、キーボードの BackSpace キーと同じ動作をします。ただし、テキストの挿入および操作については、Range オブジェクトを使用した方が、より細かく制御できます。
完全なコード例を次に示します。このコード例を使用するには、プロジェクトの ThisDocument クラスまたは ThisAddIn クラスから実行します。
Friend Sub SelectionInsertText()
Dim currentSelection As Word.Selection = Application.Selection
' Store the user's current Overtype selection
Dim userOvertype As Boolean = Application.Options.Overtype
' Make sure Overtype is turned off.
If Application.Options.Overtype Then
Application.Options.Overtype = False
End If
With currentSelection
' Test to see if selection is an insertion point.
If .Type = Word.WdSelectionType.wdSelectionIP Then
.TypeText("Inserting at insertion point. ")
.TypeParagraph()
ElseIf .Type = Word.WdSelectionType.wdSelectionNormal Then
' Move to start of selection.
If Application.Options.ReplaceSelection Then
.Collapse(Direction:=Word.WdCollapseDirection.wdCollapseStart)
End If
.TypeText("Inserting before a text block. ")
.TypeParagraph()
Else
' Do nothing.
End If
End With
' Restore the user's Overtype selection
Application.Options.Overtype = userOvertype
End Sub
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;
}