Combinar correspondencia en Excel usando VBA y macros
🔥 Quieres imprimir documentos en PDF y te habían sugerido Combinar correspondencia en Word y datos en Excel. 👉 El problema con esa opción, es que se envían una carta o se imprimen los documentos, fila por fila. 💙 Lo que tu necesitas es Imprimir por conjuntos de filas, es decir, todas las filas de una misma persona en un solo documento. 💪 ¡Las macros y VBA siguen vigentes! Aquí lo comprobamos.
Ver video Combinar correspondencia en Excel
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Qué deseamos lograr

El objetivo es Imprimir en PDF documentos por cada NOMBRE y que se incluyan todos los conceptos.
No usamos Combinar correspondencia en Word, porque ahí toma los valores fila por fila, pero nosotros deseamos hacer agrupamiento de Conceptos por NOMBRE.
Uso de VBA y macros
Y viene a nuestro rescate, las macros en Excel. Usando ciclos vamos a recorrer todos los NOMBRE y tomar los CONCEPTOS, para luego guardar cada uno como archivo PDF.
Código VBA de la macro
Option Explicit
'Mi canal de YouTube | youtube.com/user/sergioacamposh
'Mi Sitio | exceleinfo.com
'Descarga mi add-in | addin.exceleinfo.com
'Obtén la Certificación Excel Expert | exceleinfo.com/certificacion-mos
Sub CombinarCorrespondencia()
Dim Ruta As String
Dim NombreRango As String
Dim MiRango As Range
Dim Fila As Integer
Dim Nombre As String
Dim FilaDestino As Integer
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = Application.DefaultFilePath & " \ "
.Title = "EXCELeINFO - Seleccionar carpeta"
.Show
If .SelectedItems.Count = 0 Then
Else
Ruta = .SelectedItems(1)
Fila = 5
Do While Not IsEmpty(Cells(Fila, "A"))
Range("E8:F12").ClearContents
Nombre = Cells(Fila, "A")
Range("F4").Value = Nombre
FilaDestino = 8
Do While Cells(Fila, "A") = Nombre And Not IsEmpty(Cells(Fila, "A"))
Cells(FilaDestino, "E") = Cells(Fila, "B")
Cells(FilaDestino, "F") = Cells(Fila, "C")
Fila = Fila + 1
FilaDestino = FilaDestino + 1
Loop
'Si quieres mandar a imprimir usa:
'ActiveSheet.PrintOut
NombreRango = Sheets("Hoja1").Range("F4").Value
Set MiRango = Sheets("Hoja1").Range("E4:G15")
MiRango.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Ruta & "\" & NombreRango & ".pdf", OpenAfterPublish:=False
Loop
End If
End With
End Sub
Descarga el archivo de ejemplo
Combinar correspondencia Excel y macros – EXCELeINFO.zip
⭐ Si te gustó este tutorial, por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.