方法 : コンテンツ コントロールを使用して文書を保護する
文書の一部を保護すると、ユーザーは保護した部分の内容を変更および削除できなくなります。 コンテンツ コントロールを使用して Microsoft Office Word 文書の一部を保護するには、以下の方法があります。
コンテンツ コントロールを保護する。
コンテンツ コントロールに含まれていない部分を保護する。
対象: このトピックの情報は、Word 2007 と Word 2010 のドキュメント レベルのプロジェクトおよびアプリケーション レベルのプロジェクトに適用されます。詳細については、「Office アプリケーションおよびプロジェクト タイプ別の使用可能な機能」を参照してください。
コンテンツ コントロールの保護
デザイン時または実行時にドキュメント レベルのプロジェクトでコントロールのプロパティを設定することにより、ユーザーによるコンテンツ コントロールの編集または削除を防止できます。
アプリケーション レベルのプロジェクトを使用して、実行時に文書に追加するコンテンツ コントロールを保護することもできます。 詳細については、「方法 : Word 文書にコンテンツ コントロールを追加する」を参照してください。
デザイン時にコンテンツ コントロールを保護するには
Visual Studio デザイナーでホストされている文書で、保護するコンテンツ コントロールを選択します。
[プロパティ] ウィンドウで、次のプロパティの一方または両方を設定します。
ユーザーがコントロールを編集できないようにするには、LockContents を True に設定します。
ユーザーがコントロールを削除できないようにするには、LockContentControl を True に設定します。
[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 プロパティを使用します。
デザイン時に文書の一部を保護するには
Visual Studio デザイナーでホストされている文書で、保護する部分を選択します。
リボンの [開発] タブをクリックします。
注意
[開発] タブが表示されていない場合は、最初にこれを表示する必要があります。 詳細については、「方法 : [開発] タブをリボンに表示する」を参照してください。
[コントロール] グループの [グループ] ドロップダウン ボタンをクリックし、[グループ] をクリックします。
保護された領域を含む 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 文書にコンテンツ コントロールを追加する