Macro en Word para generar contratos automáticamente: Paso a paso

 

¿Te imaginas poder generar contratos personalizados en cuestión de segundos, y de manera gratuita? Si trabajas en oficina y constantemente necesitas preparar contratos u otros documentos repetitivos, esta macro de Word puede convertirse en tu mejor herramienta. En esta publicación te enseñaré una macro para automatizar tareas y evitar errores manuales.


¿Qué hace esta macro?

La macro  está diseñada para personas que manejan múltiples contratos o documentos estándar en su día a día. Algunas de sus principales funciones son:

  1. Automatización de datos personalizados: Llena automáticamente campos como el nombre, dirección, fecha, o cualquier información específica.
  2. Preservación de la plantilla original: La macro crea un nuevo documento con la información personalizada, dejando tu plantilla intacta.
  3. Flexibilidad y personalización: Puedes ajustar los campos dinámicos para que se adapten a cualquier tipo de contrato o documento estándar.

¿Cómo funciona?

La macro utiliza una tabla dentro de la plantilla para leer los datos necesarios (la tabla deber ser lo primero en el documento). Aquí te explico el flujo básico:

  1. Diseña tu plantilla: Define los campos dinámicos utilizando un formato como {{Nombre}}, {{Fecha}}, etc.
  2. Crea una tabla de datos: En la plantilla, agrega una tabla con dos columnas:
    • Columna 1: El nombre del campo (por ejemplo, Nombre, Dirección, Fecha) textual el encabezado de tu tabla debe llamarse campo.
    • Columna 2: Los valores personalizados (por ejemplo, Juan Pérez, Calle Principal 123, 01/02/2025)  textual el encabezado de tu tabla debe llamarse valor.
  3. Ejecuta la macro: Con un solo clic, el documento personalizado se generará automáticamente en un nuevo archivo de Word.

Beneficios de la macro:

  • Ahorro de tiempo: Ideal si trabajas en áreas como recursos humanos, administración, o legal y necesitas preparar contratos regularmente.
  • Minimiza errores: Evita errores comunes al copiar y pegar información manualmente.
  • Profesionalismo: Asegura que todos tus documentos sigan el mismo formato y estilo.

¿Cómo implementar esta macro?

Inserta la macro:

  • Presiona Alt + F11 para abrir el Editor de VBA.


  • Crea un nuevo módulo y pega el código.
Te comparto el código completo de la macro para que lo copies y utilices en tu propia plantilla:


    Sub GenerarContratoWord()

        Dim Campos As Object

        Dim Campo As Variant

        Dim Valor As String

        Dim tbl As Table

        Dim i As Integer

        Dim NuevoDoc As Document

        

        ' Inicializar el diccionario para los campos

        Set Campos = CreateObject("Scripting.Dictionary")

        

        ' Verificar si hay tablas en el documento actual

        If ActiveDocument.Tables.Count = 0 Then

            MsgBox "No se encontró una tabla con los datos en el documento.", vbCritical

            Exit Sub

        End If

        

        ' Asumir que la primera tabla contiene los datos (campo y valor)

        Set tbl = ActiveDocument.Tables(1)

        

        ' Leer los campos y valores de la tabla

        For i = 1 To tbl.Rows.Count

            Dim CampoTexto As String

            Dim ValorTexto As String

            

            CampoTexto = Trim(tbl.Cell(i, 1).Range.Text) ' Leer el campo (columna 1)

            CampoTexto = Left(CampoTexto, Len(CampoTexto) - 2) ' Eliminar carácter de fin de celda

            ValorTexto = Trim(tbl.Cell(i, 2).Range.Text) ' Leer el valor (columna 2)

            ValorTexto = Left(ValorTexto, Len(ValorTexto) - 2) ' Eliminar carácter de fin de celda

            

            ' Agregar al diccionario

            If CampoTexto <> "" And ValorTexto <> "" Then

                Campos.Add CampoTexto, ValorTexto

            End If

        Next i

        

        ' Crear un nuevo documento basado en la plantilla

        Set NuevoDoc = Documents.Add(Template:=ActiveDocument.FullName)

        

        ' Reemplazar cada campo en el nuevo documento

        For Each Campo In Campos.Keys

            Valor = Campos(Campo)

            With NuevoDoc.Content.Find

                .Text = "{{" & Campo & "}}" ' Buscar campos entre llaves

                .Replacement.Text = Valor

                .Forward = True

                .Wrap = wdFindContinue

                .Execute Replace:=wdReplaceAll

            End With

        Next Campo

        

        MsgBox "El contrato ha sido generado en un nuevo documento.", vbInformation

    End Sub


  • Guarda tu archivo como word con Macro




Ejecuta la macro

  • Abre tu plantilla, presiona Alt + F8, selecciona GenerarContrato y haz clic en Ejecutar.


Esta macro de Word es una solución práctica para quienes trabajan en oficina y buscan simplificar su flujo de trabajo. Automatiza tareas repetitivas, reduce errores y permite generar contratos o documentos de manera eficiente. ¿Te gustaría implementar esta herramienta en tu día a día? ¡Prueba la macro y descubre todo lo que puedes lograr con ella!

Te comparto un video para que veas como funciona la macro



Posibles mejoras a la macro:

  • Guardar automáticamente el contrato con un folio y nombres
  • Guardar el documento nuevo con formato PDF
  • Resaltar con negritas los datos que se ingresaron para que sea más fácil validarlos
  • Eliminar los datos de la tabla en la primer hoja

Espero les sea de utilidad y nos dejen sus comentarios y nos compartan con sus compañeros.

Comentarios

Entradas más populares de este blog

Macro de Excel para abrir archivo csv

API de banxico para obtener tipo de cambio utilizando Javascript

Ejemplo Macro en Word