次の方法で共有


方法 : コンテンツ コントロールを使用して文書を保護する

文書の一部を保護すると、ユーザーは保護した部分の内容を変更および削除できなくなります。 コンテンツ コントロールを使用して Microsoft Office Word 文書の一部を保護するには、以下の方法があります。

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

  • コンテンツ コントロールに含まれていない部分を保護する。

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

コンテンツ コントロールの保護

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

アプリケーション レベルのプロジェクトを使用して、実行時に文書に追加するコンテンツ コントロールを保護することもできます。 詳細については、「方法 : Word 文書にコンテンツ コントロールを追加する」を参照してください。

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

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

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

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

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

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

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

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

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

    Dim deletableControl As Microsoft.Office.Tools.Word.RichTextContentControl
    Dim editableControl As Microsoft.Office.Tools.Word.RichTextContentControl
    
    Private Sub AddProtectedContentControls()
        Me.Paragraphs(1).Range.InsertParagraphBefore()
        Dim range1 As Word.Range = Me.Paragraphs(1).Range
    
        deletableControl = Me.Controls.AddRichTextContentControl(range1, _
            "deletableControl")
        deletableControl.PlaceholderText = "You can delete this control, " & _
            "but you cannot edit it"
        deletableControl.LockContents = True
    
        range1.InsertParagraphAfter()
        Dim range2 As Word.Range = Me.Paragraphs(2).Range
    
        editableControl = Me.Controls.AddRichTextContentControl(range2, _
            "editableControl")
        editableControl.PlaceholderText = "You can edit this control, " & _
            "but you cannot delete it"
        editableControl.LockContentControl = True
    End Sub
    
    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;
    }
    

    アプリケーション レベルのプロジェクトで 2 種類の RichTextContentControl オブジェクトの LockContents プロパティと LockContentControl プロパティを使用するコード例を次に示します。 このコードを実行するには、プロジェクトの ThisAddIn クラスにコードを追加し、ThisAddIn_Startup イベント ハンドラーから AddProtectedContentControls メソッドを呼び出します。

    Dim deletableControl As Microsoft.Office.Tools.Word.RichTextContentControl
    Dim editableControl As Microsoft.Office.Tools.Word.RichTextContentControl
    
    Private Sub AddProtectedContentControls()
        ' Use the following line of code in projects that target the .NET Framework 4.
        Dim VstoDocument As Microsoft.Office.Tools.Word.Document = _
            Globals.Factory.GetVstoObject(Me.Application.ActiveDocument)
    
        ' In projects that target the .NET Framework 3.5, use the following line of code.
        ' Dim vstoDocument As Microsoft.Office.Tools.Word.Document = _
        '     Me.Application.ActiveDocument.GetVstoObject()
    
        vstoDocument.Paragraphs(1).Range.InsertParagraphBefore()
        Dim range1 As Word.Range = 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()
        Dim range2 As Word.Range = 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
    End Sub
    
    private Microsoft.Office.Tools.Word.RichTextContentControl deletableControl;
    private Microsoft.Office.Tools.Word.RichTextContentControl editableControl;
    
    private void AddProtectedContentControls()
    {
        // Use the following line of code in projects that target the .NET Framework 4.
        Microsoft.Office.Tools.Word.Document vstoDocument = 
            Globals.Factory.GetVstoObject(this.Application.ActiveDocument);
    
        // In projects that target the .NET Framework 3.5, use the following line of code.
        // Microsoft.Office.Tools.Word.Document vstoDocument = 
            //this.Application.ActiveDocument.GetVstoObject();
    
        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 に追加します。 この方法は次のような場合に役立ちます。

  • コンテンツ コントロールがない部分を保護する。

  • コンテンツ コントロールがある部分のうち、コンテンツ コントロールの外側にあるテキストまたは項目を保護する。

注意

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

デザイン時に文書の一部を保護するには

  1. Visual Studio デザイナーでホストされている文書で、保護する部分を選択します。

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

    注意

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

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

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

実行時に文書の一部を保護するには

  • 保護する部分をプログラムで選択し、AddGroupContentControl メソッドを呼び出して GroupContentControl を作成します。

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

    Dim groupControl1 As Microsoft.Office.Tools.Word.GroupContentControl
    
    Private Sub ProtectFirstParagraph()
        Me.Paragraphs(1).Range.InsertParagraphBefore()
        Dim range1 As Word.Range = Me.Paragraphs(1).Range
        range1.Text = "You cannot edit or change the formatting of text " & _
                "in this paragraph, because this paragraph is in a GroupContentControl."
        range1.Select()
    
        groupControl1 = Me.Controls.AddGroupContentControl("groupControl1")
    End Sub
    
    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");
    }
    

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

    Dim groupControl1 As Microsoft.Office.Tools.Word.GroupContentControl
    
    Private Sub ProtectFirstParagraph()
        ' Use the following line of code in projects that target the .NET Framework 4.
        Dim VstoDocument As Microsoft.Office.Tools.Word.Document = _
            Globals.Factory.GetVstoObject(Me.Application.ActiveDocument)
    
        ' In projects that target the .NET Framework 3.5, use the following line of code.
        ' Dim vstoDocument As Microsoft.Office.Tools.Word.Document = _
        '     Me.Application.ActiveDocument.GetVstoObject()
    
        VstoDocument.Paragraphs(1).Range.InsertParagraphBefore()
    
        Dim range1 As Word.Range = VstoDocument.Paragraphs(1).Range
        range1.Text = "You cannot edit or change the formatting of text " & _
                "in this paragraph, because this paragraph is in a GroupContentControl."
        range1.Select()
    
        groupControl1 = VstoDocument.Controls.AddGroupContentControl("groupControl1")
    End Sub
    
    private Microsoft.Office.Tools.Word.GroupContentControl groupControl1;
    
    private void ProtectFirstParagraph()
    {
        // Use the following line of code in projects that target the .NET Framework 4.
        Microsoft.Office.Tools.Word.Document vstoDocument =
            Globals.Factory.GetVstoObject(this.Application.ActiveDocument);
    
        // In projects that target the .NET Framework 3.5, use the following line of code.
        // Microsoft.Office.Tools.Word.Document vstoDocument = 
        //     this.Application.ActiveDocument.GetVstoObject();
    
        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");
    }
    

参照

処理手順

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

概念

拡張オブジェクトによる Word の自動化

コンテンツ コントロール

ホスト項目とホスト コントロールの概要

ホスト項目およびホスト コントロールのプログラム上の制限事項

実行時の Office ドキュメントへのコントロールの追加

ホスト コントロールのヘルパー メソッド