Añadir datos a un pdf ya creado

Puedo añadir datos a un pdf ya previamente creado desde excel, es decir si ya he generado un pdf por ejemplo con la hoja 1 de excel y luego modifico datos con la hoja 1 de excel pues añadir otra hoja al pdf inicialmente creado.

1 Respuesta

Respuesta
1

La mejor manera es crear un nuevo pdf el cual contendrá toda la información de la hoja.

En mis respuestas, existen varias macros que generar un pdf de una hoja, revisa si alguna te funciona, de lo contrario comentas...

Perdón por volver a preguntar, imaginese que en la hoja 1 tengo una plantilla y lo que quiero hacer es rellenar la plantilla de la hoja 1 con datos de la hoja 2, par que entienda por ejemplo las nóminas de una empresa de 3 trabajadores donde en la hoja 1 estaria el rallado o plantilla de la nómina y despues lo que quiero es que se genere un pdf con la nómina de los 3 trabajadores es decir con las 3 nóminas ya que los datos de los trabajadores los tengo en la hoja 2 entonces sería crear una nomina en pdf del trabajador 1, después añadir a ese pdf la del trabajador 2 .... y así sucesivamente ya que en si el rallado de la nómina o formulario solo lo tengo construido en la hoja 1 lo demás lo que hago es recorrer registros de la hoja 2 y llevarlo al formulario de la hoja 1.  He estado mirando sus respuestas y no veo nada que pueda utilizar como le pongo el ejemplo anterior.

Te ayudo con una macro que haga lo siguiente:

1. Crear un nuevo libro

2. Recorrer la hoja2 (trabajadores).

3. Tomar el trabajador-1

4. Llenar la plantilla con el trabajador-1

5. Copiar la plantilla al nuevo libro (hoja1)

6. Tomar el trabajador-2

7. Llenar la plantilla con el trabajador-1

8. Copiar la plantilla al nuevo libro (hoja2)

9. Tomar el trabajador-n

10. Repetir los pasos 5 y 6

11. Guardar el nuevo libro como PDF... Tendrás un solo archivo con todas las nóminas de los trabajadores.


Si te hace sentido, te ayudo con el código, pero tienes que darme toda la información relevante de tus hojas:

1. Cómo se llama cada hoja.

2. En la hoja de trabajadores, en cuál columna están los trabajadores.

3. En cuál fila empiezan los trabajadores.

4. En cuál celda de la plantilla hay que poner datos, si tienes fórmulas, supongo que en alguna celda pones al trabajador y todas las demás celdas se llenan con los datos del trabajador, entonces en cuál celda de la plantilla pones el dato.

---

Sería genial si puedes poner unas imágenes donde se vean las filas y las columnas de excel.

Póngame un código de cómo copiar la plantilla al nuevo libro lo trabajo y le pongo ejemplo. Muchas gracias por su respuesta

Para copiar una hoja a un nuevo libro, solamente requieres esta instrucción:

Sheets("Hoja1"). Copy

quiero enviarle un excel con un ejemplo de lo que quiero hacer pero no se como hacerlo

Sheets("datosvariables").Select
For i = 0 To 2
Sheets("datosvariables").Select
Range("a1").Select
trabajador = ActiveCell.Offset(i + 1, 0)
liquido = ActiveCell.Offset(i + 1, 1)
Sheets("plantilla").Range("d12") = trabajador
Sheets("plantilla").Range("d17") = liquido
'creo pdf
Sheets("PLANTILLA").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\USUARIO\Desktop\" & Sheets("plantilla").Range("d12") & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
Next i

Imagínese este código pero que solo me cree un pdf

Puedes compartir tu archivo en google drive.

De hecho comparte tu excel y un pdf con el resultado que quieres.

Te paso la macro para generar un pdf con todos los trabajadores:

Sub creapdf()
'Por Dante Amor
  Dim wb2 As Workbook
  Dim sh1 As Worksheet, sh2 As Worksheet
  Dim i As Long
  Dim carpeta As String, archivo As String
  '
  Application.ScreenUpdating = False
  Application.DisplayAlerts = False
  '
  Set sh1 = Sheets("datosvariables")
  Set sh2 = Sheets("plantilla")
  Set wb2 = Workbooks.Add(xlWBATWorksheet)
  For i = 2 To 3  'inicia en fila 2 y termina en fila 3, cambia el 3 por la fila que quieras
    sh2.Range("D12").Value = sh1.Range("A" & i).Value
    sh2.Range("D17").Value = sh1.Range("B" & i).Value
    sh2.Copy after:=wb2.Sheets(wb2.Sheets.Count)
  Next i
  '
  carpeta = CreateObject("WScript.Shell").specialfolders("Desktop") & "\"
  archivo = "todos" & ".pdf"
  If wb2.Sheets.Count > 1 Then wb2.Sheets(1).Delete
  wb2.ExportAsFixedFormat Type:=xlTypePDF, Filename:=carpeta & archivo, Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
  wb2.Close False
  MsgBox "Archivo PDF creado con todos los trabajadores"
  Application.ScreenUpdating = True
End Sub

¡Gracias! Ahora sí, muchas gracias por su aportación justamente es eso lo que quiero hacer, ahora estudio el código que me ha enviado y lo intentaré adaptar a mis necesidades.  Saludos desde España - Andalucía - Jaén

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas