Macro excel para generar pdf con datos con las ventas según ID vendedor

Para Dante Amor

Se tiene un Archivo llamado Ventas.xlsx que contiene las ventas del mes, se requiere una macro que genere automáticamente por cada vendedor su archivo PDF en una carpeta llamada xyz

Ventas.xlsx

Dam, Importante: Desde la Celda A1 a G10 va el encabezado del archivo: El cual debe ir en cada uno de los archivos pdf generados

A11                      B11                                     C11               D11                     .......     Z11

Id_vendedor         Código producto       Valor Venta     Fecha Venta        ..........

1

2

1

3

4

2

4

3

5

... N Códigos

Los Archivos pdf´s Generados por la macro (Consolidado.xlsm) automáticamente en la carpeta xyz son:

Estructura del Nombre Archivo Generado: IDVendedor_MesVenta_AñoVenta.PDF

1_mes_añoVenta.PDF

2_mes_añoVenta.PDF

3_mes_año.PDF

4_mes_año.PDF

Asi sucesivamente hasta

N_mes_año.PDF

1 Respuesta

Respuesta
1

Te anexo la macro, antes de ejecutarla debes crear una hoja llamada "temp".

También cambia en la macro "Hoja4" por el nombre de tu hoja que contiene las ventas.

Sub Imprimir_Pdf_Por_Vendedor()
'----
'   Por Dante Amor
'----
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.StatusBar = False
    Set l1 = ThisWorkbook
    Set h1 = Sheets("Hoja4")    'hoja con datos
    Set h2 = Sheets("temp")     'hoja temporal
    col = "A"                   'columna clave
    ucol = "G"                  'ultima columna de datos
    fila = 11                   'fila inicial de datos
    n = Columns(col).Column
    h2.Cells.Clear
    If h1.AutoFilterMode Then h1.AutoFilterMode = False
    h1.Range(h1.Cells(fila - 1, col), h1.Cells(Rows.Count, col)).Copy h2.[A1]
    u2 = h2.Range("A" & Rows.Count).End(xlUp).Row
    h2.Range("A1:A" & u2).RemoveDuplicates Columns:=1, Header:=xlYes
    '
    ruta = l1.Path & "\"
    u2 = h2.Range("A" & Rows.Count).End(xlUp).Row
    For i = 2 To u2
        Application.StatusBar = "Generando archivo " & i - 1 & " de " & u2 - 1
        clave = h2.Cells(i, "A")
        If h1.AutoFilterMode Then h1.AutoFilterMode = False
        u1 = h1.Range(col & Rows.Count).End(xlUp).Row
        h1.Range("A1:" & ucol & u1).AutoFilter Field:=n, Criteria1:=clave
        Set l2 = Workbooks.Add
        Set h21 = l2.Sheets(1)
        u1 = h1.Range(col & Rows.Count).End(xlUp).Row
        h1.Range("A1:" & ucol & u1).Copy h21.[A1]
        mes = Month(h1.Cells(u1, "D").Value)
        año = Year(h1.Cells(u1, "D").Value)
        l2.ExportAsFixedFormat Type:=xlTypePDF, _
            Filename:=ruta & clave & "_" & mes & "_" & año & ".pdf", _
            Quality:=xlQualityStandard, IncludeDocProperties:=True, _
            IgnorePrintAreas:=False, OpenAfterPublish:=False
        l2.Close False
    Next
    If h1.AutoFilterMode Then h1.AutoFilterMode = False
    Application.StatusBar = False
    MsgBox "Archivos creados"
End Sub

Nota: el mes y el año los obtengo de la fecha de la columna D.


'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda

Dante Amor, muchas Gracias!!!!!!!!!

Dam. funciona bien, pero en cada archivo pdf generado le faltó el texto de los encabezados y los titulos/nombre columna de cada una de las columnas desde la A hasta la G, es decir:

Id_vendedor         Código producto       Valor Venta     Fecha Venta        ..........

Nota: Favor Ver el siguiente texto de la pregunta original

Dam, Importante: Desde la Celda A1 a G10 va el encabezado (título) del archivo ventas.xlsx: El cual debe ir en cada uno de los archivos pdf generados

Gracias Dam

La macro copia de la "hoja4" desde a celda A1 hasta G y última fila con datos

H1.Range("A1:" & ucol & u1). Copy

Revisa que en tu hoja4 tengas datos en las celdas de A1 a G10.

También revisa que en toda la columna A tengas datos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas