次の方法で共有


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

更新 : 2008 年 7 月

対象

このトピックの情報は、指定された Visual Studio Tools for Office プロジェクトおよび Microsoft Office のバージョンにのみ適用されます。

プロジェクトの種類

  • ドキュメント レベルのプロジェクト

  • アプリケーション レベルのプロジェクト

Microsoft Office のバージョン

  • Word 2007

詳細については、「アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。

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

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

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

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

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

Visual Studio 2008 Service Pack 1 (SP1) 以降、アプリケーション レベルのプロジェクトを使用して、実行時にコンテンツ コントロールを文書に追加できるようになりました。詳細については、「方法 : 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;
    }
    

アプリケーション レベルのプロジェクトで、実行時にコンテンツ コントロールを保護するには

  • ユーザーがコントロールを編集できないようにするには、コンテンツ コントロールの LockContents プロパティを true に設定します。ユーザーがコントロールを削除できないようにするには、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()
        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()
    {
        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 に追加します。この方法は次のような場合に役立ちます。

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

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

Bb386181.alert_note(ja-jp,VS.90).gifメモ :

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

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

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

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

    Bb386181.alert_note(ja-jp,VS.90).gifメモ :

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

  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");
    }
    

アプリケーション レベルのプロジェクトで、実行時に文書の一部を保護するには

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

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

    Dim groupControl1 As Microsoft.Office.Tools.Word.GroupContentControl
    
    Private Sub ProtectFirstParagraph()
        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()
    {
        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 文書にコンテンツ コントロールを追加する

概念

コンテンツ コントロール

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

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

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

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

その他の技術情報

Word ホスト コントロール

履歴の変更

日付

履歴

理由

2008 年 7 月

アプリケーション レベルのアドインに関する手順を追加

SP1 機能変更