方法 : コンテンツ コントロールを使用して文書を保護する
更新 : 2008 年 7 月
対象 |
---|
このトピックの情報は、指定された Visual Studio Tools for Office プロジェクトおよび Microsoft Office のバージョンにのみ適用されます。 プロジェクトの種類
Microsoft Office のバージョン
詳細については、「アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。 |
文書の一部を保護すると、ユーザーは保護した部分の内容を変更および削除できなくなります。コンテンツ コントロールを使用して Microsoft Office Word 2007 文書の一部を保護するには、以下の方法があります。
コンテンツ コントロールを保護する。
コンテンツ コントロールに含まれていない部分を保護する。
コンテンツ コントロールの保護
デザイン時または実行時にドキュメント レベルのプロジェクトでコントロールのプロパティを設定することにより、ユーザーによるコンテンツ コントロールの編集または削除を防止できます。
Visual Studio 2008 Service Pack 1 (SP1) 以降、アプリケーション レベルのプロジェクトを使用して、実行時にコンテンツ コントロールを文書に追加できるようになりました。詳細については、「方法 : 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; }
アプリケーション レベルのプロジェクトで、実行時にコンテンツ コントロールを保護するには
ユーザーがコントロールを編集できないようにするには、コンテンツ コントロールの 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 に追加します。この方法は次のような場合に役立ちます。
コンテンツ コントロールがない部分を保護する。
コンテンツ コントロールがある部分のうち、コンテンツ コントロールの外側にあるテキストまたは項目を保護する。
メモ : |
---|
コンテンツ コントロールが埋め込まれた 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"); }
アプリケーション レベルのプロジェクトで、実行時に文書の一部を保護するには
保護する部分をプログラムで選択し、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 文書にコンテンツ コントロールを追加する
概念
ホスト項目およびホスト コントロールのプログラム上の制限事項
その他の技術情報
履歴の変更
日付 |
履歴 |
理由 |
---|---|---|
2008 年 7 月 |
アプリケーション レベルのアドインに関する手順を追加 |
SP1 機能変更 |