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

Combinar correspondencia en Excel - exceleinfo
Combinar correspondencia en Excel – exceleinfo

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.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top