La guía completa de automatización con macros en Office (Excel, Word, APIs y más)
Bienvenid@ a Programación para Todos, un espacio personal donde documento aprendizajes técnicos, ideas y procesos de programación que he querido probar y entender por cuenta propia. Los casos y ejemplos que comparto no tienen referencia a mi trabajo, sino que son ejercicios, pruebas y escenarios recreados a partir de inquietudes técnicas personales. Este blog funciona como un compendio personal de conocimiento: código, ideas y reflexiones que decido compartir.
¿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.
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:
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:
{{Nombre}}, {{Fecha}}, etc.Alt + F11 para abrir el Editor de VBA.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
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
Comentarios
Publicar un comentario
Dejanos tus dudas y comentarios