Word 文書にコンテンツ コントロールを追加する

ドキュメント レベルの Word プロジェクトでは、デザイン時または実行時にプロジェクトの文書にコンテンツ コントロールを追加できます。 Word VSTO アドイン プロジェクトでは、実行時に任意の開いている文書にコンテンツ コントロールを追加できます。

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

このトピックでは、次のタスクについて説明します。

デザイン時にコンテンツ コントロールを追加する

デザイン時にドキュメント レベルのプロジェクトの文書にコンテンツ コントロールを追加する方法はいくつかあります。

  • [ツールボックス][Word コントロール]タブからコンテンツ コントロールを追加する。

  • Word でネイティブなコンテンツ コントロールを追加するのと同様に、ドキュメントにコンテンツ コントロールを追加します。

  • [データ ソース] ウィンドウからコンテンツ コントロールを文書にドラッグする。 これは、コントロールの作成時にデータにコントロールをバインドする場合に役立ちます。 詳しくは、「方法: オブジェクトのデータをドキュメントに読み込む」および「方法: データベースのデータをドキュメントに読み込む」をご覧ください。

    Note

    次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。 これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。 詳細については、「Visual Studio IDE のカスタマイズ」を参照してください。

[ツールボックス] を使用して文書にコンテンツ コントロールを追加するには

  1. Visual Studio デザイナーでホストされているドキュメントで、コンテンツ コントロールを追加する場所にカーソルを置くか、コンテンツ コントロールに置換するテキストを選択します。

  2. [ツールボックス] を開き、 [Word コントロール] タブをクリックします。

  3. 次のいずれかの方法でコントロールを追加します。

    • [ツールボックス]のコンテンツ コントロールをダブルクリックします。

      または

    • ツールボックス内のコンテンツ コントロールをクリックし、Enter キーを押します。

      または

    • [ツールボックス] からコンテンツ コントロールを文書にドラッグします。 コンテンツ コントロールが、マウス ポインターの場所ではなく、ドキュメント内の現在の選択の場所で追加されます。

Note

GroupContentControl [ツールボックス] を使用してを追加することはできません。 GroupContentControl は Word で、または実行時にのみ追加できます。

Note

Visual Studio では、チェック ボックス コンテンツ コントロールがツールボックスで提供されていません。 文書にチェック ボックス コンテンツ コントロールを追加するには、プログラムを使用して ContentControl オブジェクトを作成する必要があります。 詳細については、「コンテンツ コントロール」を参照してください。

Word で文書にコンテンツ コントロールを追加するには

  1. Visual Studio デザイナーでホストされているドキュメントで、コンテンツ コントロールを追加する場所にカーソルを置くか、コンテンツ コントロールに置換するテキストを選択します。

  2. リボンの [開発] タブをクリックします。

    Note

    [開発] タブが表示されていない場合は、最初にこれを表示する必要があります。 詳しくは、「方法: [開発] タブをリボンに表示する」をご覧ください。

  3. [コントロール] グループで、追加するコンテンツ コントロールのアイコンをクリックします。

実行時に、ドキュメント レベルのプロジェクトにコンテンツ コントロールを追加する

プロジェクトで Controls クラスの ThisDocument プロパティのメソッドを使用して、実行時にプログラムによりドキュメントにコンテンツ コントロールを追加できます。 各メソッドには 3 つのオーバーロードがあります。それらを使用することにより、次のようにコンテンツ コントロールを追加できます。

  • 現在の選択項目でコントロールを追加します。

  • 指定された範囲にコントロールを追加します。

  • 文書内のネイティブなコンテンツ コントロールに基づいたコントロールを追加します。

    動的に作成されたコンテンツ コントロールは、文書を閉じる際に文書に残りません。 ただし、ネイティブなコンテンツ コントロールは、文書内に残ります。 文書を次回開くときに、ネイティブのコンテンツ コントロールに基づくコンテンツ コントロールを再作成できます。 詳細については、「実行時に Office 文書にコントロールを追加する」を参照してください。

Note

Word 2010 プロジェクトで文書にチェック ボックス コンテンツ コントロールを追加するには、 ContentControl オブジェクトを作成する必要があります。 詳細については、「コンテンツ コントロール」を参照してください。

現在の選択項目でコンテンツ コントロールを追加するには

  1. 名前が Add<コントロール クラス> (<コントロール クラス=""> は、AddRichTextContentControl などの追加するコンテンツ コントロールのクラス名) で、パラメーターが 1 個 (新しいコントロールの名前) の ControlCollection メソッドを使用します。

    次のコード例では、 AddRichTextContentControl メソッドを使用して文書の先頭に新しい RichTextContentControl を追加しています。 このコードを実行するには、プロジェクトの ThisDocument クラスにコードを追加し、 AddRichTextControlAtSelection イベント ハンドラーから ThisDocument_Startup メソッドを呼び出します。

    private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl1;
    
    private void AddRichTextControlAtSelection()
    {
        this.Paragraphs[1].Range.InsertParagraphBefore();
        this.Paragraphs[1].Range.Select();
    
        richTextControl1 = this.Controls.AddRichTextContentControl("richTextControl1");
        richTextControl1.PlaceholderText = "Enter your first name";
    }
    

指定された範囲にコンテンツ コントロールを追加するには

  1. 名前が Add<コントロール クラス> (<コントロール クラス=""> は、AddRichTextContentControl などの追加するコンテンツ コントロールのクラス名) で、Range をパラメーターとする ControlCollection メソッドを使用します。

    次のコード例では、 AddRichTextContentControl メソッドを使用して文書の先頭に新しい RichTextContentControl を追加しています。 このコードを実行するには、プロジェクトの ThisDocument クラスにコードを追加し、 AddRichTextControlAtRange イベント ハンドラーから ThisDocument_Startup メソッドを呼び出します。

    private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl2;
    
    private void AddRichTextControlAtRange()
    {
        this.Paragraphs[1].Range.InsertParagraphBefore();
    
        richTextControl2 = this.Controls.AddRichTextContentControl(this.Paragraphs[1].Range,
            "richTextControl2");
        richTextControl2.PlaceholderText = "Enter your first name";
    }
    

ネイティブなコンテンツ コントロールに基づいたコンテンツ コントロールを追加するには

  1. 名前が Add<コントロール クラス> (<コントロール クラス=""> は、AddRichTextContentControl などの追加するコンテンツ コントロールのクラス名) で、Microsoft.Office.Interop.Word.ContentControl をパラメーターとする ControlCollection メソッドを使用します。

    次のコード例では、 AddRichTextContentControl メソッドを使用して、ドキュメント内にあるすべてのネイティブなリッチ テキスト コントロールについて新しい RichTextContentControl を作成しています。 このコードを実行するには、プロジェクトの ThisDocument クラスにコードを追加し、 CreateRichTextControlsFromNativeControls イベント ハンドラーから ThisDocument_Startup メソッドを呼び出します。

    private System.Collections.Generic.List
        <Microsoft.Office.Tools.Word.RichTextContentControl> richTextControls;
    
    private void CreateRichTextControlsFromNativeControls()
    {
        if (this.ContentControls.Count <= 0)
            return;
    
        richTextControls = new System.Collections.Generic.List
            <Microsoft.Office.Tools.Word.RichTextContentControl>();
        int count = 0;
    
        foreach (Word.ContentControl nativeControl in this.ContentControls)
        {
            if (nativeControl.Type ==
                Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlRichText)
            {
                count++;
                Microsoft.Office.Tools.Word.RichTextContentControl tempControl =
                    this.Controls.AddRichTextContentControl(nativeControl,
                    "VSTORichTextControl" + count.ToString());
                richTextControls.Add(tempControl);
            }
        }
    }
    

VSTO アドイン プロジェクトで、実行時にコンテンツ コントロールを追加する

コンテンツ フォーム コントロールは、実行時に VSTO アドインを使用して任意の開いているドキュメントに追加できます。 そのためには、開いている文書に基づいた Document ホスト項目を生成し、このホスト項目の Controls プロパティのメソッドを使用します。 各メソッドには 3 つのオーバーロードがあります。それらを使用することにより、次のようにコンテンツ コントロールを追加できます。

  • 現在の選択項目でコントロールを追加します。

  • 指定された範囲にコントロールを追加します。

  • 文書内のネイティブなコンテンツ コントロールに基づいたコントロールを追加します。

    動的に作成されたコンテンツ コントロールは、文書を閉じる際に文書に残りません。 ただし、ネイティブなコンテンツ コントロールは、文書内に残ります。 文書を次回開くときに、ネイティブのコンテンツ コントロールに基づくコンテンツ コントロールを再作成できます。 詳しくは、「Office ドキュメントでのダイナミック コントロールの永続化」をご覧ください。

    VSTO アドイン プロジェクトでのホスト項目の生成に関する詳細については、「実行時に VSTO アドインで Word 文書と Excel ブックを拡張する」を参照してください。

Note

文書にチェック ボックス コンテンツ コントロールを追加するには、 ContentControl オブジェクトを作成する必要があります。 詳細については、「コンテンツ コントロール」を参照してください。

現在の選択項目でコンテンツ コントロールを追加するには

  1. 名前が Add<コントロール クラス> (<コントロール クラス=""> は、AddRichTextContentControl などの追加するコンテンツ コントロールのクラス名) で、パラメーターが 1 個 (新しいコントロールの名前) の ControlCollection メソッドを使用します。

    次のコード例では、 AddRichTextContentControl メソッドを使用してアクティブな文書の先頭に新しい RichTextContentControl を追加しています。 このコードを実行するには、プロジェクトの ThisAddIn クラスにコードを追加し、 AddRichTextControlAtSelection イベント ハンドラーから ThisAddIn_Startup メソッドを呼び出します。

    private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl1;
    
    private void AddRichTextControlAtSelection()
    {
        Word.Document currentDocument = this.Application.ActiveDocument;
        currentDocument.Paragraphs[1].Range.InsertParagraphBefore();
        currentDocument.Paragraphs[1].Range.Select();
    
        Document extendedDocument = Globals.Factory.GetVstoObject(currentDocument);
    
        richTextControl1 = extendedDocument.Controls.AddRichTextContentControl("richTextControl1");
        richTextControl1.PlaceholderText = "Enter your first name";
    }
    

指定された範囲にコンテンツ コントロールを追加するには

  1. 名前が Add<コントロール クラス> (<コントロール クラス=""> は、AddRichTextContentControl などの追加するコンテンツ コントロールのクラス名) で、Range をパラメーターとする ControlCollection メソッドを使用します。

    次のコード例では、 AddRichTextContentControl メソッドを使用してアクティブな文書の先頭に新しい RichTextContentControl を追加しています。 このコードを実行するには、プロジェクトの ThisAddIn クラスにコードを追加し、 AddRichTextControlAtRange イベント ハンドラーから ThisAddIn_Startup メソッドを呼び出します。

    private Microsoft.Office.Tools.Word.RichTextContentControl richTextControl2;
    
    private void AddRichTextControlAtRange()
    {
        Word.Document currentDocument = this.Application.ActiveDocument;
        currentDocument.Paragraphs[1].Range.InsertParagraphBefore();
    
        Document extendedDocument = Globals.Factory.GetVstoObject(currentDocument);
    
        richTextControl2 = extendedDocument.Controls.AddRichTextContentControl(
            currentDocument.Paragraphs[1].Range, "richTextControl2");
        richTextControl2.PlaceholderText = "Enter your first name";
    }
    

ネイティブなコンテンツ コントロールに基づいたコンテンツ コントロールを追加するには

  1. 名前が Add<コントロール クラス> (<コントロール クラス=""> は、AddRichTextContentControl などの追加するコンテンツ コントロールのクラス名) で、Microsoft.Office.Interop.Word.ContentControl をパラメーターとする ControlCollection メソッドを使用します。

    次のコード例では、 AddRichTextContentControl メソッドを使用して、文書を開いた後に文書内にあるすべてのネイティブなリッチ テキスト コントロールについて、新しい RichTextContentControl を作成しています。 このコードを実行するには、プロジェクトの ThisAddIn クラスに次のコードを追加します。

    private System.Collections.Generic.List
        <Microsoft.Office.Tools.Word.RichTextContentControl> richTextControls;
    
    private void Application_DocumentOpen(Microsoft.Office.Interop.Word.Document Doc)
    {
        if (Doc.ContentControls.Count > 0)
        {
            Document extendedDocument = Globals.Factory.GetVstoObject(Doc);
    
            richTextControls = new System.Collections.Generic.List
                <Microsoft.Office.Tools.Word.RichTextContentControl>();
            int count = 0;
    
            foreach (Word.ContentControl nativeControl in Doc.ContentControls)
            {
                if (nativeControl.Type ==
                    Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlRichText)
                {
                    count++;
                    Microsoft.Office.Tools.Word.RichTextContentControl tempControl =
                        extendedDocument.Controls.AddRichTextContentControl(nativeControl,
                        "VSTORichTextControl" + count.ToString());
                    richTextControls.Add(tempControl);
                }
            }
        }
    }
    

    C# の場合、 Application_DocumentOpen イベント ハンドラーを DocumentOpen イベントに接続する必要もあります。

    this.Application.DocumentOpen +=
        new Word.ApplicationEvents4_DocumentOpenEventHandler(Application_DocumentOpen);