プログラムによってブックマーク テキストを更新する

Microsoft Office Word 文書のプレースホルダー ブックマークにテキストを挿入することにより、そのテキストを後で取得したり、ブックマーク内のテキストを置き換えたりすることができます。 ドキュメント レベルのカスタマイズを開発している場合は、データにバインドされた Bookmark コントロール内のテキストを更新することもできます。 詳細については、「Office ソリューションのコントロールにデータをバインドする」を参照してください。

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

ブックマーク オブジェクトには次の 2 種類があります。

  • Bookmark ホスト コントロール。

    Bookmark コントロールは、ネイティブ Bookmark オブジェクトを拡張したもので、データのバインドとイベントの公開が可能になります。 ホスト コントロールについて詳しくは、「ホスト項目とホスト コントロールの概要」をご覧ください。

  • Bookmark ネイティブ オブジェクトです。

    Bookmark オブジェクトには、イベントや、データのバインド機能はありません。

    ブックマークにテキストを割り当てる場合、BookmarkBookmark の動作は異なります。 詳細については、「Bookmark コントロール」を参照してください。

ホスト コントロールを使用する

Bookmark コントロールを使用してブックマークの内容を更新するには

  1. ブックマークの名前を指定する引数 bookmarkText プロパティに割り当てる文字列を指定する引数 newText を受け取るプロシージャを作成します。

    Note

    Bookmark コントロールの Text または FormattedText プロパティにテキストを割り当てても、ブックマークは削除されません。

    static void BookMarkReplace(
        ref Microsoft.Office.Tools.Word.Bookmark bookmark, 
        string newText)
    {
    
  2. 文字列 newTextBookmarkText プロパティに割り当てます。

        bookmark.Text = newText;
    }
    

Word オブジェクトを使用する

Word の Bookmark オブジェクトを使用してブックマークの内容を更新するには

  1. Bookmark の名前を指定する引数 bookmark とブックマークの Text プロパティに割り当てる文字列を指定する引数 newText を受け取るプロシージャを作成します。

    Note

    Word のネイティブ Bookmark オブジェクトにテキストを割り当てると、ブックマークは削除されます。

    internal void BookMarkReplaceNative(
        Word.Bookmark bookmark, 
        string newText)
    {
    
  2. 文字列 newText をブックマークの Text プロパティに割り当てます。これによって、ブックマークが自動的に削除されます。 その後、Bookmarks コレクションにブックマークを再び追加します。

    次のコード例はドキュメント レベルのカスタマイズで使用できます。

        object rng = bookmark.Range;
        string bookmarkName = bookmark.Name;
    
        bookmark.Range.Text = newText;
    
        this.Bookmarks.Add(bookmarkName, ref rng); 
    }
    

    次のコード例は VSTO アドインで使用できます。 この例ではアクティブ ドキュメントを使用します。

        object rng = bookmark.Range;
        string bookmarkName = bookmark.Name;
    
        bookmark.Range.Text = newText;
    
        Word.Document document = this.Application.ActiveDocument;
        document.Bookmarks.Add(bookmarkName, ref rng);
    }