Saltar al contenido

Macro para Salvar documentos diferentes en pdf desde un data validation


Recommended Posts

publicado

Equipo buenas noches, espero esten bien.

Soy nuevo en este mundo del vba de excel. En sintesis mi proyecto es crear estados de cuenta para clientes, para ello disene en excel un estado de cuenta, ahora toca salvar en pdf, esa parte esta lista para un solo documento, pero tengo un data validation list con todos mis clientes, la idea es que se cree un loop que vaya nombre por nombre de la lista y me salve un pdf por cada cliente en una ruta previamente definida.

les dejo el codigo que tengo hasta el momento para ver si me pueden ayudar:

 

Option Explicit

Sub GuardarEstado()

    Dim nombredearchivo As String
    Dim NombreHoja As String
    Dim HojaDestino As Range
    Dim NuevaFila As Integer
    Dim i As Integer
    Dim j As Integer
    Dim NumFactura As String
    Dim Ruta As String
    Dim dataValidationCell As Range
    Dim dataValidationListSource As Range
    Dim dvValueCell As Range
    Dim lastrow As Range
    
    
    
    NombreHoja = "Log"
    NumFactura = ThisWorkbook.Sheets("Estado").Range("ValCliente").Value
    nombredearchivo = "Estado"
    Ruta = "C:\Users\jfamilia\Desktop\archivos bck\Archivos Clinimed\Archivos\Estados de cuentas"
    
    Worksheets("Estado").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
                    Ruta & "\" & "Estado De Cuenta-" & NumFactura & ".pdf", Quality:=xlQualityStandard, _
                    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True


'----- Defining Variables
With ThisWorkbook.Sheets(NombreHoja)

    For i = 1 To 1
        Set HojaDestino = ThisWorkbook.Sheets(NombreHoja).Range("A1").CurrentRegion
        NuevaFila = HojaDestino.rows.Count + 1
        .Cells(NuevaFila, 1).Value = Date
        .Cells(NuevaFila, 2).Value = Range("ValCliente").Value
        .Cells(NuevaFila, 3).Value = Range("ValCodigo").Value
        .Cells(NuevaFila, 4).Value = Range("ValCorte").Value
        .Cells(NuevaFila, 5).Value = Range("ValBalance").Value
        .Cells(NuevaFila, 6).Value = Range("ValAtraso").Value
        .Cells(NuevaFila, 7).Value = Range("ValFacVen").Value

            
            
    Next i


End With

MsgBox "Alta exitosa", vbInformation, "EXCELeINFO"

End Sub

publicado

Jelow,

Desconociendo el formato de celdas y todo el detalle de como aparece el PDF en cuestión, puedes tener en cuenta esta opción:

Crear una lista básica, con los nombres de clientes y cuando lanza el código, hacer un loop (dejo código con la idea base):

for i = 1 to Range("listaclientes").rows.count
	
	nombreCliente = Range("listaclientes").range(i,1).value

	'CÓDIGO ADICIONAL
next i

1.- En "CÓDIGO ADICIONAL" puedes ejecutar el código para que guarde el documento PDF con el nombre del cliente y lo hará por cada cliente.

2.- O puedes incluir ese "nombreCliente" en una parte del PDF que se va a guardar, a modo de dato (no sé si me he explicado bien ?)

 

Cualquier aclaración, quedo pendiente.

 

Espero al menos te haya ayudado algo 

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.