Cómo aplicar protección de documentos de Word con permisos específicos por sección mediante VBA
🔍 WiseChecker

Cómo aplicar protección de documentos de Word con permisos específicos por sección mediante VBA

Necesita proteger partes de un documento de Word y dejar otras secciones editables por usuarios o grupos específicos. La protección de documentos estándar en Word se aplica a todo el documento y no permite un control detallado sobre secciones individuales. Este artículo explica cómo usar Visual Basic for Applications (VBA) para aplicar protección específica por sección que restrinja la edición en algunas secciones y permita cambios en otras. Aprenderá la estructura del código VBA, cómo establecer contraseñas por sección y cómo asignar permisos de edición a usuarios específicos.

Puntos clave: Protección de documentos específica por sección mediante VBA

  • Herramientas > Macro > Editor de Visual Basic (Alt+F11): Abra el editor de VBA para escribir y ejecutar macros de protección.
  • ActiveDocument.Sections(index).ProtectedForForms = True: Bloquee una sección específica para que solo se puedan editar los campos de formulario.
  • ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True, Password:=”password”: Aplique restricciones de edición protegidas con contraseña a todo el documento mientras se conserva la configuración de campos de formulario a nivel de sección.
  • ActiveDocument.Sections(index).Range.Editors.Add Editor:=”username”: Otorgue permisos de edición a usuarios específicos para una sección determinada.

ADVERTISEMENT

Cómo funciona la protección específica por sección en Word

La protección de documentos integrada de Word (Revisar > Restringir edición) se aplica a todo el documento. Puede optar por permitir solo comentarios, cambios controlados o rellenar formularios. Sin embargo, este método no permite bloquear la Sección 1 y dejar la Sección 2 totalmente editable. VBA proporciona una solución alternativa combinando la protección de campos de formulario con permisos a nivel de sección.

El concepto central utiliza la propiedad ProtectedForForms de un objeto Section. Cuando se establece en True, esa sección se comporta como si contuviera solo campos de formulario: no se puede editar ningún otro contenido. Al establecer esta propiedad en False para las secciones que desea que permanezcan editables, crea un documento con protección mixta. Luego llama al método Protect del objeto Document con wdAllowOnlyFormFields para aplicar la configuración a nivel de sección.

Requisitos previos

Antes de escribir código VBA, asegúrese de lo siguiente:

  • Tiene un documento de Word dividido en secciones mediante saltos de sección (Disposición > Saltos > Página siguiente, Continuo, etc.).
  • Conoce los números de índice de las secciones que desea proteger. La Sección 1 es la primera sección del documento.
  • Tiene el editor de VBA habilitado. Vaya a Archivo > Opciones > Personalizar cinta de opciones y marque la pestaña Desarrollador. Luego haga clic en Desarrollador > Visual Basic.
  • Si planea asignar permisos a usuarios específicos, esos usuarios deben tener cuentas de Microsoft o formar parte de la misma organización que utiliza Information Rights Management (IRM).

Pasos para aplicar protección específica por sección mediante VBA

Siga estos pasos para crear una macro que bloquee la Sección 1 y la Sección 3 mientras deja editable la Sección 2. Ajuste los índices de sección para que coincidan con su documento.

  1. Abra el Editor de VBA
    Presione Alt+F11 para abrir el editor de Visual Basic for Applications. En el Explorador de proyectos, localice su documento (por ejemplo, Project (Document1)).
  2. Inserte un nuevo módulo
    Haga clic en Insertar > Módulo para crear un módulo de código en blanco.
  3. Escriba la macro de protección
    Pegue el siguiente código en el módulo:
    Sub ProtectSections()
    Dim doc As Document
    Set doc = ActiveDocument

    ' Unprotect the document first if already protected
    If doc.ProtectionType <> wdNoProtection Then
    doc.Unprotect Password:=""
    End If

    ' Set ProtectedForForms for specific sections
    ' Section 1: protected
    doc.Sections(1).ProtectedForForms = True
    ' Section 2: editable
    doc.Sections(2).ProtectedForForms = False
    ' Section 3: protected
    doc.Sections(3).ProtectedForForms = True

    ' Apply document-level protection to enforce form-field only editing
    doc.Protect Type:=wdAllowOnlyFormFields, NoReset:=True, Password:="MyPassword123"

    MsgBox "Protection applied. Sections 1 and 3 are locked; Section 2 is editable."
    End Sub

  4. Ejecute la macro
    Presione F5 mientras el cursor está dentro de la macro, o vaya a Ejecutar > Ejecutar Sub/UserForm. Un cuadro de mensaje confirma que se aplicó la protección.
  5. Pruebe la protección
    Intente editar texto en la Sección 1 o la Sección 3. Word debería impedir los cambios. Cambie a la Sección 2 y verifique que puede editar libremente. Si el documento está protegido con contraseña, deberá introducir la contraseña para desprotegerlo más adelante.

Asignación de permisos a usuarios específicos

Para permitir que solo ciertos usuarios editen una sección mientras permanece bloqueada para los demás, agregue el siguiente código dentro de la macro después de establecer ProtectedForForms pero antes de llamar a doc.Protect.

  1. Agregue un usuario a la colección Editors de una sección
    Use el método Editors.Add con el correo electrónico o nombre de usuario:
    doc.Sections(2).Range.Editors.Add Editor:="user@example.com"
    Esto otorga permiso de edición a ese usuario para la Sección 2 incluso cuando el documento está protegido.
  2. Elimine todos los editores de una sección protegida
    Para asegurarse de que nadie excepto el propietario pueda editar una sección protegida, borre la colección Editors:
    doc.Sections(1).Range.Editors.DeleteAll
  3. Aplique la protección con permisos de usuario
    Después de establecer los editores, llame a doc.Protect Type:=wdAllowOnlyFormFields, NoReset:=True, Password:="MyPassword123". Los usuarios agregados como editores pueden modificar el contenido en sus secciones asignadas.

ADVERTISEMENT

Problemas comunes al usar VBA para la protección de secciones

ProtectedForForms no bloquea la sección

Si una sección permanece editable después de establecer ProtectedForForms = True, probablemente olvidó llamar a doc.Protect en el documento. La propiedad ProtectedForForms solo surte efecto cuando el documento está protegido con wdAllowOnlyFormFields. Incluya siempre la línea doc.Protect después de establecer las propiedades de la sección.

La macro se ejecuta pero la protección no se aplica después de cerrar y volver a abrir

La configuración de protección del documento se guarda con el archivo. Cuando vuelve a abrir el documento, la protección permanece activa. Sin embargo, también se conserva la configuración de ProtectedForForms por sección. Para verificarlo, abra el documento, vaya a Revisar > Restringir edición y compruebe que esté seleccionado “Rellenar formularios”. Si el panel muestra “Sin protección”, ejecute la macro de nuevo. Considere agregar una macro AutoOpen para volver a aplicar la protección automáticamente.

Error de permisos al agregar editores

El método Editors.Add requiere que el documento use Information Rights Management (IRM) o que el usuario esté autenticado mediante una cuenta de Microsoft. Si recibe un error en tiempo de ejecución, asegúrese de que el documento no esté ya protegido con un tipo diferente. Desproteja el documento primero, luego agregue los editores y, por último, vuelva a aplicar la protección.

Elemento Restringir edición estándar de Word Protección específica por sección con VBA
Alcance Documento completo Secciones individuales
Permisos de usuario No compatible por sección Compatible mediante la colección Editors
Contraseña Una contraseña para todo el documento Una contraseña para todo el documento, pero las secciones se comportan de manera diferente
Edición permitida Solo comentarios, cambios controlados o campos de formulario Edición completa en secciones no protegidas; solo campos de formulario en secciones protegidas
Requiere VBA No Sí, para establecer la configuración inicial

Ahora puede aplicar protección de documentos específica por sección en Word mediante VBA. Comience identificando las secciones de su documento y escribiendo una macro que establezca ProtectedForForms para cada sección. Recuerde llamar a doc.Protect con wdAllowOnlyFormFields para aplicar la configuración. Para escenarios avanzados, asigne editores a secciones específicas mediante el método Editors.Add. Para automatizar la protección cada vez que se abra el documento, coloque la macro en el módulo ThisDocument y use el evento Document_Open.

ADVERTISEMENT