📘 Ejercicio 4 – Generación de cartas personalizadas desde Excel a Word
📌 Planteamiento del problema:
Una empresa quiere automatizar la creación de **cartas personalizadas** a sus clientes morosos. El objetivo es que, a partir de los datos en Excel, se genere un documento Word para cada cliente.
- ✅ En la hoja Clientes, hay columnas con Nombre, Dirección y Saldo pendiente.
- ✅ La macro debe abrir Word, crear una carta para cada cliente con deuda y completar los datos dinámicamente.
- ✅ Cada carta debe guardarse como PDF con el nombre del cliente.
- ✅ Todos los PDFs deben guardarse en la carpeta “Documentos”.
👉 Tu trabajo es generar un prompt lo bastante claro y completo para que la IA devuelva la macro VBA correcta.
"Escribe una macro en VBA que: 1️⃣ Lea en la hoja 'Clientes' los datos de Nombre, Dirección y Saldo pendiente. 2️⃣ Cree una carta personalizada en Word para cada cliente con deuda. 3️⃣ Inserte los datos de cada cliente en el texto de la carta. 4️⃣ Guarde cada carta como PDF con el nombre del cliente en la carpeta Documentos. 5️⃣ Incluya comentarios explicativos en cada bloque de código."
Sub CartasPersonalizadas()
Dim WordApp As Object, Doc As Object
Dim ws As Worksheet
Dim i As Long
Dim nombre As String, direccion As String, saldo As Double
Dim ruta As String
Set ws = Sheets("Clientes")
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True
For i = 2 To ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
If ws.Cells(i, 3).Value > 0 Then ' Solo clientes con deuda
nombre = ws.Cells(i, 1).Value
direccion = ws.Cells(i, 2).Value
saldo = ws.Cells(i, 3).Value
' Crear documento
Set Doc = WordApp.Documents.Add
' Escribir contenido
Doc.Content.Text = "Estimado/a " & nombre & "," & vbCrLf & vbCrLf & _
"Le informamos que su saldo pendiente es de $" & saldo & "." & vbCrLf & _
"Dirección registrada: " & direccion & vbCrLf & vbCrLf & _
"Le agradecemos regularizar su situación lo antes posible." & vbCrLf & vbCrLf & _
"Atentamente," & vbCrLf & "Departamento de Cobranzas"
' Guardar como PDF
ruta = Environ("USERPROFILE") & "\Documents\" & nombre & "_Carta.pdf"
Doc.ExportAsFixedFormat ruta, 17
' Cerrar documento
Doc.Close False
End If
Next i
MsgBox "✅ Todas las cartas fueron generadas y guardadas como PDF."
End Sub
No hay comentarios:
Publicar un comentario