Fracasar en Blogger intentando ganar dinero: lo que aprendí después de años escribiendo

Bienvenid@ a Programación para Todos, un espacio para aprender a programar desde cero con ejemplos sencillos en PHP, HTML, JavaScript, Python, C++, SQL, y más. Aquí encontrarás historia, conceptos clave y aplicaciones reales. Porque la programación no es solo para expertos: en todo proyecto de software se necesita un equipo que entienda, colabore y construya en conjunto
¿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