Saltar al contenido

Macro para Salvar documentos diferentes en pdf desde un data validation


Recommended Posts

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

Enlace a comentario
Compartir con otras webs

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 

Enlace a comentario
Compartir con otras webs

Archivado

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

  • 96 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      177
    • Comentarios
      90
    • Revisiones
      27

  • Crear macros Excel

  • Mensajes

    • Hola buenas tardes. En una hoja plantilla donde realizo diferentes consultas de datos. tengo ya establecido dos formulas diferentes con función SI y buscar. estos buscan diferentes rangos de datos y recibendiferentes resultados. Cada formula varia según una palabra o numero  ejemplo si pongo Xl pone la formula 1 y si pongo cualquier numero entre 1 y 3 pone la segunda formula. Lo que necesito hacer es que si en una celda de la columna B3 pongo XL debería de considerar la formula 1 y si pusiera el numero 1 me pondría la segunda formula, dentro de la misma formula. Ya agregue la función SI($C3="Xl",Formula1.. Pero no me funciona, espero me puedan ayudar.   Muchas gracias Mariano   Formula doble si en celda existe.xlsx
    • Sub control2558() Application.ScreenUpdating = False Dim I As Integer I = 4 While Sheets("FT-ADF-2558").Cells(I, 102) <> "" Sheets("FT-ADF-2558").Cells(6, 82) = Sheets("FT-ADF-2558").Cells(I, 102) Dim NombreArchivo, RutaArchivo As String NombreArchivo = "Hoja Control " & Sheets("FT-ADF-2558").Cells(I, 102) RutaArchivo = ActiveWorkbook.Path & "\" & NombreArchivo & ".xlsm" Dim NuevoLibro As Workbook Set NuevoLibro = Workbooks.Add Sheets("FT-ADF-2558").Copy Before:=NuevoLibro.Sheets(1) NuevoLibro.SaveAs Filename:=RutaArchivo NuevoLibro.Close I = I + 1 Wend MsgBox ("Proceso generado con éxito") Application.ScreenUpdating = True End Sub  
    • Ese error es porque no existe la hoja 10 con ese nombre, entonces cámbialo por FT-ADF-2558
    • Hola, gracias. No se ejecuta...   sale esto: se ha producido el error "424"  en tiempo de ejecución. Se requiere un objeto   Le doy en depurar y me sale en amarillo esta parte  While Hoja10.Cells(I, 102) <> ""        
    • Hola Israel,   Muchísimas gracias por tu consejo. Te comento como me funcionó. Yo tengo un libro Excel con 1.000.000 de filas  y 7 columnas. Si mantengo apretado las teclas Ctrl+Shift+Flecha abajo, me selecciona todos los datos. de la hoja. Pero como me dijiste que una celda vacía rompe la selección, lo que hice fue insertar una fila vacía bajo la última fila que me interesa copiar, selecciono la fila superior con las columnas que me interesa copiar, luego apretando las teclas Ctrl + Shift y luego dando un solo clic en la tecla Flecha hacia abajo, me selecciona los datos hasta la fila vacía. Tema resuelto, nuevamente muchísimas gracias. Lamento haber aprendido esta operación tan tarde.   Saludos, Israel    Betomil
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • 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.