Comment : protéger des parties de documents à l'aide de contrôles de contenu
Lorsque vous protégez une partie d'un document, vous empêchez les utilisateurs de modifier ou de supprimer le contenu dans cette partie du document.Il existe plusieurs manières de protéger des parties d'un document Microsoft Office Word à l'aide de contrôles de contenu :
Vous pouvez protéger un contrôle de contenu.
Vous pouvez protéger une partie d'un document qui n'est pas dans un contrôle de contenu.
S'applique à : Les informations contenues dans cette rubrique s'appliquent aux projets de niveau document et de niveau application pour Word 2013 et Word 2010. Pour en savoir plus, consultez Fonctionnalités disponibles par type d'application et de projet Office.
Protection d'un contrôle de contenu
Vous pouvez empêcher les utilisateurs de modifier ou de supprimer un contrôle de contenu en définissant des propriétés du contrôle dans un projet au niveau du document au moment du design ou de l'exécution.
Vous pouvez également protéger des contrôles de contenu que vous ajoutez à un document au moment de l'exécution à l'aide d'un projet au niveau de l'application.Pour plus d’informations, consultez Comment : ajouter des contrôles de contenu à des documents Word.
Pour protéger un contrôle de contenu au moment du design
Dans le document hébergé dans le concepteur Visual Studio, sélectionnez le contrôle de contenu à protéger.
Dans la fenêtre Propriétés, définissez l'une des propriétés suivantes ou les deux :
Pour empêcher les utilisateurs de modifier le contrôle, affectez à LockContents la valeur True.
Pour empêcher les utilisateurs de supprimer le contrôle, affectez à LockContentControl la valeur True.
Cliquez sur OK.
Pour protéger un contrôle de contenu au moment de l'exécution
Affectez à la propriété LockContents du contrôle de contenu la valeur true pour empêcher les utilisateurs de modifier le contrôle, puis affectez à la propriété LockContentControl la valeur true pour empêcher les utilisateurs de supprimer le contrôle.
L'exemple de code suivant montre l'utilisation des propriétés LockContents et LockContentControl de deux objets RichTextContentControl différents dans un projet au niveau du document.Pour exécuter ce code, ajoutez-le à la classe ThisDocument de votre projet et appelez la méthode AddProtectedContentControls à partir du gestionnaire d'événements ThisDocument_Startup.
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; }
L'exemple de code suivant montre l'utilisation des propriétés LockContents et LockContentControl de deux objets RichTextContentControl différents dans un projet d'application.Pour exécuter ce code, ajoutez-le à la classe ThisAddIn du projet et appelez la méthode AddProtectedContentControls à partir du gestionnaire d'événements ThisAddIn_Startup.
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 = _ Globals.Factory.GetVstoObject(Me.Application.ActiveDocument) 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 = 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; }
Protection d'une partie d'un document qui n'est pas dans un contrôle de contenu
Vous pouvez empêcher les utilisateurs de modifier une zone d'un document en la plaçant dans un GroupContentControl.Cela s'avère utile dans les scénarios suivant :
Vous souhaitez protéger une zone qui ne contient pas de contrôles de contenu.
Vous souhaitez protéger une zone qui contient déjà des contrôles de contenu, mais le texte ou d'autres éléments que vous souhaitez protéger ne sont pas dans les contrôles de contenu.
[!REMARQUE]
Si vous créez un GroupContentControl qui contient des contrôles de contenu incorporés, ces contrôles ne sont pas protégés automatiquement.Pour empêcher les utilisateurs de modifier un contrôle de contenu incorporé, utilisez la propriété LockContents du contrôle.
Pour protéger une zone d'un document au moment du design
Dans le document hébergé dans le concepteur Visual Studio, sélectionnez la zone à protéger.
Dans le ruban, cliquez sur l'onglet Développeur.
[!REMARQUE]
Si l'onglet Développeur n'est pas visible, vous devez préalablement l'afficher.Pour plus d’informations, consultez Comment : afficher l'onglet Développeur sur le ruban.
Dans le groupe Contrôles, cliquez sur le bouton déroulant Groupe, puis cliquez sur Groupe.
Un GroupContentControl qui contient la région protégée est généré automatiquement dans la classe ThisDocument dans votre projet.Une bordure représentant le contrôle de groupe est visible au moment du design, mais il n'y a aucune bordure visible au moment de l'exécution.
Pour protéger une zone d'un document au moment de l'exécution
Sélectionnez par programmation la zone à protéger, puis appelez la méthode AddGroupContentControl pour créer un GroupContentControl.
L'exemple de code suivant d'un projet au niveau du document ajoute du texte au premier paragraphe du document, sélectionne le premier paragraphe, puis instancie un GroupContentControl.Pour exécuter ce code, ajoutez-le à la classe ThisDocument de votre projet et appelez la méthode ProtectFirstParagraph à partir du gestionnaire d'événements ThisDocument_Startup.
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"); }
L'exemple de code suivant d'un projet au niveau de l'application ajoute du texte au premier paragraphe du document actif, sélectionne le premier paragraphe, puis instancie un GroupContentControl.Pour exécuter ce code, ajoutez-le à la classe ThisAddIn du projet et appelez la méthode ProtectFirstParagraph à partir du gestionnaire d'événements ThisAddIn_Startup.
Dim groupControl1 As Microsoft.Office.Tools.Word.GroupContentControl Private Sub ProtectFirstParagraph() Dim VstoDocument As Microsoft.Office.Tools.Word.Document = _ Globals.Factory.GetVstoObject(Me.Application.ActiveDocument) 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 = 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"); }
Voir aussi
Tâches
Comment : ajouter des contrôles de contenu à des documents Word
Concepts
Automatisation de Word à l'aide d'objets étendus
Vue d'ensemble des éléments hôtes et des contrôles hôtes
Limitations de programmation des éléments hôtes et des contrôles hôtes
Ajout de contrôles à des documents Office au moment de l'exécution