次の方法で共有


コンテンツ コントロールを使用してドキュメントの一部を保護する

ドキュメントの一部を保護することにより、ユーザーがドキュメントのその部分を変更したり削除したりできないようにします。 コンテンツ コントロールを使用して Microsoft Office Word ドキュメントの一部を保護する方法は、いくつかあります。

  • コンテンツ コントロールを保護することができます。

  • コンテンツ コントロールに含まれていないドキュメントの一部を保護することができます。

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

コンテンツ コントロールを保護する

ユーザーがコンテンツ コントロールを編集または削除できないようにするには、デザイン時または実行時にドキュメント レベルのプロジェクトでコントロールのプロパティを設定します。

VSTO アドイン プロジェクトを使用して、実行時にドキュメントに追加したコンテンツ コントロールを保護することもできます。 詳細については、「方法: Word 文書にコンテンツ コントロールを追加する」を参照してください。

デザイン時に、コンテンツ コントロールを保護するには

  1. Visual Studio デザイナーでホストされているドキュメントで、保護するコンテンツ コントロールを選択します。

  2. [プロパティ] ウィンドウで、次のプロパティのいずれか、または両方を設定します。

    • ユーザーがコントロールを編集できないようにするには、LockContentsTrue に設定します。

    • ユーザーがコントロールを削除できないようにするには、LockContentControlTrue に設定します。

  3. OK をクリックします。

実行時にコンテンツ コントロールを保護するには

  1. ユーザーがコントロールを編集できないようにするには、コンテンツ コントロールの LockContents プロパティを true に設定し、ユーザーがコントロールを削除できないようにするには、LockContentControl プロパティを true に設定します。

    次のコード例は、ドキュメント レベル プロジェクト内の 2 つの異なる RichTextContentControl オブジェクトのプロパティ、LockContentsLockContentControl の使用法を示しています。 このコードを実行するには、プロジェクトの ThisDocument クラスにコードを追加し、 AddProtectedContentControls イベント ハンドラーから ThisDocument_Startup メソッドを呼び出します。

    private Microsoft.Office.Tools.Word.RichTextContentControl deletableControl;
    private Microsoft.Office.Tools.Word.RichTextContentControl editableControl;
    
    private void AddProtectedContentControls()
    {
        this.Paragraphs[1].Range.InsertParagraphBefore();
        Word.Range range1 = this.Paragraphs[1].Range;
    
        deletableControl = this.Controls.AddRichTextContentControl(range1,
            "deletableControl");
        deletableControl.PlaceholderText = "You can delete this control, " +
            "but you cannot edit it";
        deletableControl.LockContents = true;
    
        range1.InsertParagraphAfter();
        Word.Range range2 = this.Paragraphs[2].Range;
    
        editableControl = this.Controls.AddRichTextContentControl(range2,
            "editableControl");
        editableControl.PlaceholderText = "You can edit this control, " +
            "but you cannot delete it";
        editableControl.LockContentControl = true;
    }
    

    次のコード例は、VSTO アドイン プロジェクト内の 2 つの異なる RichTextContentControl オブジェクトのプロパティ、LockContentsLockContentControl の使用法を示しています。 このコードを実行するには、プロジェクトの ThisAddIn クラスにコードを追加し、 AddProtectedContentControls イベント ハンドラーから ThisAddIn_Startup メソッドを呼び出します。

    private Microsoft.Office.Tools.Word.RichTextContentControl deletableControl;
    private Microsoft.Office.Tools.Word.RichTextContentControl editableControl;
    
    private void AddProtectedContentControls()
    {
        Microsoft.Office.Tools.Word.Document vstoDocument = 
            Globals.Factory.GetVstoObject(this.Application.ActiveDocument);
    
    
        vstoDocument.Paragraphs[1].Range.InsertParagraphBefore();
        Word.Range range1 = vstoDocument.Paragraphs[1].Range;
    
        deletableControl = vstoDocument.Controls.AddRichTextContentControl(range1,
            "deletableControl");
        deletableControl.PlaceholderText = "You can delete this control, " +
            "but you cannot edit it";
        deletableControl.LockContents = true;
    
        range1.InsertParagraphAfter();
        Word.Range range2 = vstoDocument.Paragraphs[2].Range;
    
        editableControl = vstoDocument.Controls.AddRichTextContentControl(range2,
            "editableControl");
        editableControl.PlaceholderText = "You can edit this control, " +
            "but you cannot delete it.";
        editableControl.LockContentControl = true;
    }
    

コンテンツ コントロールに含まれていないドキュメントの一部を保護する

ドキュメントのある領域を GroupContentControl に配置することにより、ユーザーがその領域を変更できないようにすることができます。 これは、次のシナリオで役立ちます。

  • コンテンツ コントロールが含まれていない領域を保護する場合。

  • 既にコンテンツ コントロールが含まれている領域だが、保護対象のテキストまたはその他のアイテムが、コンテンツ コントロールに含まれていない場合。

Note

埋め込みコンテンツ コントロールを含む GroupContentControl を作成する場合、埋め込みコンテンツ コントロールは自動的には保護されません。 ユーザーが埋め込みコンテンツ コントロールを編集できないようにするには、コントロールの LockContents プロパティを使用します。

デザイン時にドキュメントのある領域を保護するには

  1. Visual Studio デザイナーでホストされているドキュメントで、保護する領域を選択します。

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

    Note

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

  3. [コントロール] グループで [グループ] ドロップダウン ボタンをクリックし、[グループ] をクリックします。

    保護された領域を含む GroupContentControl が、プロジェクト内の ThisDocument クラスに自動的に生成されます。 グループ コントロールを表す罫線はデザイン時に表示されますが、実行時に表示される境界線はありません。

実行時にドキュメントの領域を保護するには

  1. プログラムを使用して、保護する領域を選択し、AddGroupContentControl メソッドを呼び出すことにより GroupContentControl を作成します。

    ドキュメント レベル プロジェクトの次のコード例は、ドキュメント内の最初の段落にテキストを追加し、最初の段落を選択して GroupContentControl をインスタンス化します。 このコードを実行するには、プロジェクトの ThisDocument クラスにコードを追加し、 ProtectFirstParagraph イベント ハンドラーから ThisDocument_Startup メソッドを呼び出します。

    private Microsoft.Office.Tools.Word.GroupContentControl groupControl1;
    
    private void ProtectFirstParagraph()
    {
        this.Paragraphs[1].Range.InsertParagraphBefore();
        Word.Range range1 = this.Paragraphs[1].Range;
    
        range1.Text = "You cannot edit or change the formatting of text " +
            "in this sentence, because this sentence is in a GroupContentControl.";
        range1.Select();
        groupControl1 = this.Controls.AddGroupContentControl("groupControl1");
    }
    

    VSTO アドイン プロジェクトの次のコード例は、アクティブなドキュメント内の最初の段落にテキストを追加し、最初の段落を選択して GroupContentControl をインスタンス化します。 このコードを実行するには、プロジェクトの ThisAddIn クラスにコードを追加し、 ProtectFirstParagraph イベント ハンドラーから ThisAddIn_Startup メソッドを呼び出します。

           private Microsoft.Office.Tools.Word.GroupContentControl groupControl1;
    
           private void ProtectFirstParagraph()
           {
               Microsoft.Office.Tools.Word.Document vstoDocument =
                   Globals.Factory.GetVstoObject(this.Application.ActiveDocument);
    
    
               vstoDocument.Paragraphs[1].Range.InsertParagraphBefore();
    
               Word.Range range1 = vstoDocument.Paragraphs[1].Range;
               range1.Text = "You cannot edit or change the formatting of text " +
                   "in this sentence, because this sentence is in a GroupContentControl.";
               range1.Select();
    
               groupControl1 = vstoDocument.Controls.AddGroupContentControl("groupControl1");
           }