Excel: cree varios archivos PDF basados en una lista
Hace poco estuve en una llamada en la que alguien me preguntó si era posible crear un PDF único para cada elemento de una lista. La respuesta es “Sí”, por eso en este post quiero mostrarte cómo hacerlo; cómo crear varios archivos PDF basados en una lista en Excel.
Tabla de contenido
- Guión
- macro VBA
- Adaptando el código a su escenario
- Probandolo
Descargue el archivo de ejemplo: únase al programa Insiders gratuito y obtenga acceso al archivo de ejemplo utilizado para esta publicación.
Nombre del archivo: 0073 Guardar archivos PDF basados en una lista.zip
Tener acceso
Guión
El escenario que estamos viendo es razonablemente sencillo, por lo que debería poder adaptarlo a sus circunstancias específicas.
En el archivo de ejemplo, queremos crear un informe de examen para cada estudiante según su número de identificación (ver captura de pantalla a continuación).
Cuando el valor de ID de estudiante en la celda G4 cambia, el informe se vuelve a calcular para devolver los resultados del estudiante seleccionado.
La celda G4 se basa en una lista de validación de datos, utilizando los valores que comienzan en la celda I4 .
Hay una forma denominada Guardar archivos PDF; asignaremos la macro a este botón más adelante.
Todo el informe se basa en datos contenidos en una tabla de Excel (ver captura de pantalla a continuación)
He utilizado las funciones XLOOKUP , UNIQUE y FILTER para facilitar la demostración. Por lo tanto, el archivo de ejemplo solo funcionará correctamente si tiene una versión de Excel habilitada para matrices dinámicas (es decir, no funcionará en Excel 2019 y versiones anteriores). Sin embargo, no he utilizado ninguna funcionalidad de matriz dinámica en la macro de VBA. Debería poder adaptar el código, incluso si no tiene una versión de Excel habilitada para matrices dinámicas.
macro VBA
Inserte el siguiente código en un módulo de código estándar.
Sub SavePDFsFromList()'Declarar las variablesDim ws como WorksheetDim rngID As RangeDim rngListStart As RangeDim filasCount As LongDim i As LongDim pdfFilePath As StringDim tempPDFFilePath As String'Detener la actualización de la pantalla mientras se ejecutaApplication.ScreenUpdating = False'Reference Report SheetSet ws = ActiveWorkbook.Sheets( "Report")'Haga referencia al ID de estudiante cellSet rngID = ws.Range("G4")'Haga referencia al inicio de la ID de estudiante ListSet rngListStart = ws.Range("I4")'Cuente las filas en la ID de estudiante ListrowsCount = rngListStart .CurrentRegion.Rows.Count - 1'Crear el nombre del archivo PDFpdfFilePath = "C:Carpeta de pruebaPDF ExportStudent Exam Record - [ID].pdf"For i = 1 To rowsCount 'Cambiar el ID de estudiante actual rngID.Value = rngListStart.Offset( i - 1, 0).Value 'Reemplazar [ID] con el valor de ID del estudiante tempPDFFilePath = Reemplazar(pdfFilePath, "[ID]", rngID.Value) 'Crear el PDF ws.ExportAsFixedFormat Type:=xlTypePDF, _ fileName:= tempPDFFilePathNext Reinicio la pantalla actualizandoApplication.ScreenUpdating = TrueEnd Sub
Adaptando el código a su escenario
Hay demasiados escenarios en los que se podría aplicar este tipo de solución. Por lo tanto, deberá adaptar el código anterior para cumplir con sus requisitos específicos. Los elementos imprescindibles a cambiar son:
Establecer rngID = ws.Range(" G4 ")
La referencia de celda G4 debe cambiarse para que sea el parámetro que haga que cambie el informe.
Establecer rngListStart = ws.Range(" I4 ")
La referencia de celda I4 debe ser la primera celda en la lista de elementos para recorrer.
pdfFilePath = "C:Carpeta de pruebaPDF ExportRegistro de examen de estudiante - [ID] .pdf"
pdfFilePath debe contener una ruta de carpeta válida en su PC o red.
La cadena de [ID] identifica la referencia que debe reemplazarse dentro de la ruta del archivo PDF. Esta cadena de texto debe ser la misma en el código anterior y siguiente.
tempPDFFilePath = Reemplazar(pdfFilePath, " [ID] ", rngID.Value)
Probandolo
Ahora, asignemos la macro a la forma para que podamos probarla.
- Haga clic derecho en la forma
- Seleccione Asignar macro… en el menú
- En el cuadro de diálogo Asignar macro , seleccione la macro
- Haga clic en Aceptar
Ahora todo está configurado; probémoslo. Haga clic en el botón Guardar archivos PDF .
Guardamos todos los informes individuales de los estudiantes en unos segundos. Entonces, incluso si tuviera cientos, no debería tomar mucho tiempo.
Si desea profundizar en el tema de guardar archivos PDF con macros de VBA, consulte esta publicación: Guardar Excel como PDF con VBA .
Deja una respuesta