Comparteix a través de


Proteger partes de documentos mediante controles de contenido

Al proteger un elemento de un documento, se impide que los usuarios cambien o eliminen el contenido de ese elemento. Existen varios modos de proteger los elementos de un documento de Microsoft Office Word mediante los controles de contenido:

  • Puede proteger un control de contenido.

  • Puede proteger un elemento de un documento que no está en un control de contenido.

    Se aplica a: la información de este tema se aplica a proyectos de nivel de documento y proyectos de complementos de VSTO para Word. Para obtener más información, consulte Características disponibles por aplicación de Office lication y tipo de proyecto.

Protección de un control de contenido

Puede impedir que los usuarios editen o eliminen un control de contenido estableciendo propiedades del control en un proyecto de nivel de documento en tiempo de diseño o en tiempo de ejecución.

También puede proteger los controles de contenido que agregue a un documento en tiempo de ejecución mediante un proyecto de complemento de VSTO. Para obtener más información, vea Cómo: Agregar controles de contenido a documentos de Word.

Para proteger un control de contenido en tiempo de diseño

  1. En el documento hospedado en el diseñador de Visual Studio, seleccione el control de contenido que desea proteger.

  2. En la ventana Propiedades , establezca una o ambas de las siguientes propiedades:

    • Para evitar que los usuarios editen el control, establezca LockContents en True.

    • Para evitar que los usuarios eliminen el control, establezca LockContentControl en True.

  3. Haga clic en OK.

Para proteger un control de contenido en tiempo de ejecución

  1. Establezca la LockContents propiedad del control de contenido en true para evitar que los usuarios editen el control y establezca la LockContentControl propiedad en true para impedir que los usuarios eliminen el control.

    En el siguiente ejemplo de código se muestra cómo usar las propiedades LockContents y LockContentControl de dos objetos RichTextContentControl diferentes en un proyecto de nivel de documento. Para ejecutar este código, agregue el código a la clase ThisDocument del proyecto y llame al método AddProtectedContentControls desde el controlador de eventos ThisDocument_Startup .

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

    En el siguiente ejemplo de código se muestra cómo usar las propiedades LockContents y LockContentControl de dos objetos RichTextContentControl diferentes en un proyecto de complemento de VSTO. Para ejecutar este código, agregue el código a la clase ThisAddIn del proyecto y llame al método AddProtectedContentControls desde el controlador de eventos ThisAddIn_Startup .

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

Proteger una parte de un documento que no está en un control de contenido

Puede impedir que los usuarios cambien un área de un documento colocándola en un GroupContentControl. Esto es útil en los siguientes escenarios:

  • Desea proteger un área que no contiene controles de contenido.

  • Desea proteger un área que ya contiene controles de contenido, pero el texto u otros elementos que desea proteger no se encuentran en los controles de contenido.

Nota:

Si crea un GroupContentControl que contiene controles de contenido insertados, estos controles no se protegerán automáticamente. Para evitar que los usuarios editen un control de contenido incrustado, use la propiedad LockContents del control.

Para proteger un área de un documento en tiempo de diseño

  1. En el documento hospedado en el diseñador de Visual Studio, seleccione el área que desea proteger.

  2. En la cinta de opciones, haga clic en la pestaña Desarrollador .

    Nota:

    Si la pestaña Desarrollador no está visible, primero debe mostrarla. Para obtener más información, vea Cómo: Mostrar la pestaña programador en la cinta de opciones.

  3. En el grupo Controles , haga clic en el botón desplegable Grupo y, a continuación, haga clic en Grupo.

    Se genera automáticamente un GroupContentControl que contiene la región protegida en la clase ThisDocument de su proyecto. Un borde que representa el control de grupo está visible en tiempo de diseño, pero no hay ningún borde visible en tiempo de ejecución.

Para proteger un área de un documento en tiempo de ejecución

  1. Seleccione el área que desea proteger mediante programación y, a continuación, llame al método AddGroupContentControl para crear un GroupContentControl.

    El siguiente ejemplo de código para un proyecto de nivel de documento agrega texto al primer párrafo del documento, selecciona el primer párrafo y, a continuación, crea una instancia de un GroupContentControl. Para ejecutar este código, agregue el código a la clase ThisDocument del proyecto y llame al método ProtectFirstParagraph desde el controlador de eventos ThisDocument_Startup .

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

    El siguiente ejemplo de código para un proyecto de complemento de VSTO agrega texto al primer párrafo del documento activo, selecciona el primer párrafo y, a continuación, crea una instancia de un GroupContentControl. Para ejecutar este código, agregue el código a la clase ThisAddIn del proyecto y llame al método ProtectFirstParagraph desde el controlador de eventos ThisAddIn_Startup .

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