Cómo usar VBA para aplicar una plantilla de Word a documentos
🔍 WiseChecker

Cómo usar VBA para aplicar una plantilla de Word a documentos

Tiene un documento de Word que necesita los estilos, encabezados o macros de una plantilla específica. Adjuntar manualmente una plantilla a cada archivo lleva tiempo cuando trabaja con muchos documentos. VBA automatiza esta tarea ejecutando una macro corta que aplica una plantilla a uno o a todos los documentos abiertos. Este artículo explica cómo escribir y ejecutar una macro de VBA para adjuntar una plantilla de Word a un documento. Aprenderá el código exacto, cómo modificarlo para la ruta de su plantilla y qué revisar si la macro no funciona como se espera.

Puntos clave: Aplicar una plantilla de Word con VBA

  • ActiveDocument.AttachedTemplate = “C:\path\template.dotx”: Esta única línea de código VBA adjunta una plantilla al documento activo actual.
  • Bucle For Each Doc In Application.Documents: Use este bucle para aplicar una plantilla a todos los documentos abiertos a la vez en lugar de ejecutar la macro repetidamente.
  • Application.ScreenUpdating = False antes del bucle: Desactive la actualización de pantalla para acelerar la macro al procesar muchos archivos y evitar parpadeos.

ADVERTISEMENT

Qué hace VBA al adjuntar una plantilla a un documento

VBA es el lenguaje de programación integrado en Word. Cuando adjunta una plantilla con VBA, cambia la propiedad AttachedTemplate de un objeto Document. Esta propiedad acepta una ruta de archivo completa a un archivo .dotm, .dotx o .dot. La plantilla proporciona estilos, entradas de AutoTexto, atajos de teclado y macros al documento. El documento en sí no se mueve ni cambia su formato inmediatamente a menos que también ejecute un comando aparte para actualizar los estilos desde la plantilla.

Antes de escribir la macro, necesita dos cosas. Primero, conocer la ruta de archivo exacta de la plantilla. Por ejemplo, C:\Users\YourName\AppData\Roaming\Microsoft\Templates\MyCompany.dotx. Segundo, habilitar la pestaña Desarrollador en Word para poder abrir el editor de VBA. Vaya a Archivo > Opciones > Personalizar cinta de opciones y marque la casilla Desarrollador en la columna derecha.

Las macros de VBA se almacenan en un módulo dentro de la plantilla Normal.dotm o dentro del documento actual. Para esta tarea, almacene la macro en Normal.dotm para que esté disponible para todos los documentos.

Pasos para escribir y ejecutar la macro de VBA para adjuntar una plantilla

  1. Abrir el editor de VBA
    Presione Alt + F11 en su teclado. Se abre la ventana de Microsoft Visual Basic for Applications. Si no ve el panel Explorador de proyectos a la izquierda, presione Ctrl + R para mostrarlo.
  2. Insertar un nuevo módulo
    En el Explorador de proyectos, haga clic derecho en Normal y elija Insertar > Módulo. Se abre una ventana de código en blanco. Aquí es donde pegará el código de la macro.
  3. Pegar el código de la macro
    Copie el siguiente código de VBA y péguelo en la ventana del módulo:

    Sub ApplyTemplateToActiveDoc()
    Dim templatePath As String
    templatePath = "C:\Users\YourName\AppData\Roaming\Microsoft\Templates\MyCompany.dotx"
    ActiveDocument.AttachedTemplate = templatePath
    MsgBox "Template applied to " & ActiveDocument.Name
    End Sub

    Reemplace la ruta de archivo en el código con la ruta real a su archivo de plantilla. Mantenga las barras invertidas dobles. Por ejemplo, si su plantilla está en D:\Templates\Letter.dotx, cambie la línea a templatePath = "D:\Templates\Letter.dotx".

  4. Ejecutar la macro en el documento activo
    Cierre el editor de VBA haciendo clic en la X de la esquina superior derecha. De vuelta en Word, presione Alt + F8 para abrir el cuadro de diálogo Macros. Seleccione ApplyTemplateToActiveDoc en la lista y haga clic en Ejecutar. Word adjunta la plantilla y muestra un mensaje de confirmación.
  5. Opcional: Actualizar estilos desde la nueva plantilla
    Adjuntar la plantilla no actualiza automáticamente los estilos del documento. Para copiar los estilos de la plantilla al documento, agregue esta línea antes de la línea End Sub:

    ActiveDocument.UpdateStyles
    Esta línea reemplaza todos los estilos del documento con las definiciones de la plantilla adjunta.

Aplicar la plantilla a todos los documentos abiertos a la vez

  1. Crear una nueva macro para varios documentos
    Abra de nuevo el editor de VBA (Alt + F11). Inserte otro módulo o agregue código debajo de la macro existente. Pegue este código:

    Sub ApplyTemplateToAllDocs()
    Dim doc As Document
    Dim templatePath As String
    templatePath = "C:\Users\YourName\AppData\Roaming\Microsoft\Templates\MyCompany.dotx"
    Application.ScreenUpdating = False
    For Each doc In Application.Documents
    doc.AttachedTemplate = templatePath
    doc.UpdateStyles
    Next doc
    Application.ScreenUpdating = True
    MsgBox "Template applied to all open documents"
    End Sub

  2. Ejecutar la macro
    Presione Alt + F8, seleccione ApplyTemplateToAllDocs y haga clic en Ejecutar. La macro procesa cada documento abierto. La actualización de pantalla se desactiva durante el bucle para mejorar la velocidad y reducir el parpadeo visual.

ADVERTISEMENT

Qué revisar si la macro no funciona

La macro se ejecuta pero nada cambia en el documento

La causa más común es la falta de la línea ActiveDocument.UpdateStyles. Sin ella, solo cambia el vínculo de la plantilla. El documento sigue usando sus estilos antiguos. Agregue la línea UpdateStyles como se muestra en el paso 5 anterior.

Word muestra un error: “Error en tiempo de ejecución 4198”

Este error significa que Word no puede encontrar el archivo de plantilla en la ruta que proporcionó. Verifique la ruta. Abra el Explorador de archivos, navegue hasta la ubicación de la plantilla y copie la ruta exacta desde la barra de direcciones. Péguela en el código de VBA. Asegúrese de que la extensión del archivo coincida: .dotm para plantillas con macros habilitadas, .dotx para plantillas sin macros o .dot para plantillas de Word más antiguas.

La macro funciona pero los estilos se actualizan incorrectamente

El método UpdateStyles reemplaza todos los estilos del documento con los de la plantilla. Si el documento tenía estilos personalizados que no existen en la plantilla, esos estilos se eliminan. Para conservar los estilos existentes, no use UpdateStyles. En su lugar, actualice manualmente solo estilos específicos usando el cuadro de diálogo Organizador o copiando estilos uno por uno en VBA con el método Copy.

Quiero aplicar la plantilla a un documento sin abrirlo

Puede abrir un documento en segundo plano, adjuntar la plantilla, guardarlo y cerrarlo. Use la siguiente estructura de código. Reemplace la ruta de archivo con la ruta de su documento y la ruta de la plantilla.

Sub ApplyTemplateToClosedDoc()
Dim doc As Document
Dim docPath As String
Dim templatePath As String
docPath = "C:\Docs\Report.docx"
templatePath = "C:\Templates\ReportTemplate.dotx"
Set doc = Documents.Open(docPath, Visible:=False)
doc.AttachedTemplate = templatePath
doc.UpdateStyles
doc.Save
doc.Close
End Sub

Elemento Solo documento activo Todos los documentos abiertos
Objeto de VBA ActiveDocument Colección Application.Documents
Bucle necesario No Sí, For Each doc In Application.Documents
Actualización de pantalla desactivada Opcional Recomendado para mayor velocidad
UpdateStyles necesario Sí, si los estilos deben cambiar Sí, si los estilos deben cambiar
Riesgo de sobrescribir estilos personalizados Igual que cualquier cambio de plantilla Igual que cualquier cambio de plantilla

Ahora puede escribir y ejecutar una macro de VBA para adjuntar una plantilla a uno o varios documentos de Word. Comience con la macro de un solo documento en un archivo de prueba para verificar la ruta de la plantilla. Luego use el bucle para varios documentos cuando necesite procesar un lote de archivos. Para una automatización avanzada, combine esta macro con un cuadro de diálogo de archivos que le permita elegir una plantilla en tiempo de ejecución usando el objeto Application.FileDialog.

ADVERTISEMENT